Tråd synkronisering med mutex
Indledning
Hej igen.
I denne artikel vil jeg bygge lidt videre på projektet, som jeg startede i artiklen om multithreading. I den artikel nævnte jeg, at trådes adgang til resourcer kan komme ret ubelejligt, og vi så endda et eksempel på det. Jeg vil starte med at forstærke effekten ved at skrive et multitrådet program, som crasher, fordi to tråde bruger samme resourcer på en usmart måde. Så vil vi prøve at synkronisere trådene bagefter, så samme program ikke længere har problemer.
Alle operativsystemer har flere forskellige metoder til at synkronisere tråde, og den, ...
Netværksprogrammering 2 - TCP client sockets
Introduktion
Hej igen.
Så skal vi igen til at kode noget netværk, og denne gang bliver det nok lidt mere spændende. Vi skal nemlig i gang med at lave netværks forbindelser. Vi vil kigge på, hvad sockets er, og hvordan man bruger dem. Vi bruger den IP adresse klasse, vi udviklede i første artikel om netværk, så jeg håber, at du har gemt projektet.
Målet med vores kode bliver, at forbinde til en webserver og hente forsiden. Det vil illustrere både forsendelse og læsning af data. Til slut vil vi lave en klasse, som indkapsler al funktionaliteten, som vi gennemgår.
[ ...
Netværksprogrammering 1 - Hostnames og IP adresser
Introduktion
Hej alle
Der har været en del spørgsmål i C++ foraet om netværksprogrammering, så jeg har valgt at skrive en række artikler om emnet. Netværksprogrammering er ret komplekst, og der er mange funktioner og strukturer at beskrive, så jeg har valgt at skrive mindst fire artikler:
* Netværksprogrammering 1 - Hostnames og IP adresser
* Netværksprogrammering 2 - TCP client sockets
* Netværksprogrammering 3 - TCP server sockets
* Netværksprogrammering 4 - UDP sockets
Gennem artikelserien vil vi udvikle et sæt af genbrugelige klasser, som kan hjælpe os i ...
Multithreading
Indledning
I denne artikel vil jeg prøve at forklare et komplekst emne som er meget anvendelig i selv simple programmer og nødvendig efterhånden som kompleksiteten i softwaren stiger.
Når et program kører siges det at det kører i en tråd. Dvs. du ved altid præcis at programmet nu skal til at eksekvere koden på linje X i fil Y og når du kalder en blokerende funktion som f.eks. læsning af tastaturet, så stopper hele programmet. Det kan være nok i meget simple programmer, men nogle gange ville det være rart, hvis programmet kunne køre to tråde. Altså at eksekveringen bl ...
Multiplatform udvikling
Hej alle C/C++ kodere.
Denne artikel er tilgængt dem, som vil udvikle software, som kan compile under flere operativ systemer som f.eks. Windows og Linux. Jeg håber, det vil lykkes mig at få flere til at skrive arkitektur uafhængig kode :-)
Baggrund
C/C++ definerer en syntax som er standardiseret. Det betyder i teorien, at kode, som compiler under Linux, også burde compile under Windows. Det er bare ikke altid tilfældet og det kan der være flere årsager til:
* Man bruger et API, som er tilgængeligt på én platform men ikke på en anden.
* Compilere virker desværre ...
JT - 02-02-2004 -
3551 hits
Klasser fra bunden...
Da klasser er en vigtig del OOP, vil jeg her give en kort introduktion til emnet. Før jeg går i gang vil jeg lige fortælle hvad en klasse er.
En klasse er en del af din kode, som når den kaldes vil skabe et objekt.
Et eksempel på en simpel klasse er:
#include
class Test {
public:
void Tal() {
cout "Hej med dig...";
}
};
int main() {
Test *pTest = 0;
pTest = new Test;
pTest-Tal();
return 0;
}
Her laves en klasse "Test" som indeholder en enkelt funktion "Tal" der ikke returnere en værd ...
Farver i console
Man kan nogle gange blive lidt træt af ens konsolprogrammer.
De er kedelige at kigge på og ikke ret brugervenlige.
Men frygt ikke! Det er faktisk muligt at peppe sine konsolprogrammer op. Og det kræver ikke andet end 10 minutter!
Trin 1 (headers og namespace)
Lav et nyt C++ dokument. I toppen af det skal du skrive:
#include
#include
#include
#include
using namespace std;
Nu har vi inkluderet den ISO-kompatible iostream (bemærk, uden .h), Windows-API'et, standard streng og stan ...
Hvordan man laver en singleton klasse
En Singleton er et objekt der kun kan have en lovlig instans ad gangen, dette betyder at man kun kan have en enkelt singleton klasse ad gangen mens programmet kører. Hvis der forsøges at oprette en ny instans af klassen vil programmet generere en fejl, hvis det er i debug mode. Singleton klasser er meget nyttige i specielt computerspil til brug når man laver for eksempel fjender, lydadministratorer, objektadministratorer og så videre. De tilbyder adgang fra hele dit program via statiske members på klassen. Singletons er baseret på statiske pointere til klasser. Ved at holde en statisk pointer ...
Start på OpenGL
I denne artikel vil vi se på hvordan vi laver vores første OpenGL-prpgram i Windows. Artiklen henvender sig mest til brugere af Dev-C++, så hvis du ikke har den installeret, vil jeg anbefale dig at tage et smut ind på www.bloodshed.net og hente den nyeste version.
Opsætning
Opret et nyt projekt ved at gå ind i Files - New - Project... og vælg derefter Windows Application. Slet derefter al kode der måtte fremkomme i main.cpp eftersom vi vil starte helt fra bunden :)
Gå nu ind i Project - Project Options og tilføj følgende under linker/library feltet:
-lopeng ...
Windows programmering part 1
I denne artikel skal vi se på hvordan man kan bruge c til at lave andet end små consol applikationer, nemlig til hvordan man kan lave vinduer, knapper osv. Altås en kort lille, og sikkert ikke fuldendt, gennemgang af WIN32 API'et. Denne artikel kræver noget kendskab til c++, som du kan læse i nogle af de andre artikler her på udvikleren. Efter du har læst denne artikel, vil du være i stand til at: Lave din helt egen windows applikation med et vindue.
Lidt basis viden
Før vi går helt igang med kode, er det vigtigt at du forstår hvordan hele dit program skal bygges o ...