Hoi,
Ik ben bezig met een protocol te schrijven in Borland C++ en daarvoor heb ik meerdere threads nodig die samen kunnen werken. Ik schrijf het protocol in een console applicatie project en gebruik thread objecten voor de threads. Nu werken de threads prima alleen snap ik het gebruik van variabelen binnen threads nog niet helemaal.
Allereest heb je een zogenaamde thread variabele die globaal moet zijn binnen een thread. Zowel op WIKI-web (http://en.wikipedia.org/wiki/Thread-local_storage) als in de Borland help staat dat zo'n variabele alsvolgt kan worden aangemaakt:
int __thread number;
of
__declspec(thread) int number;
Nu heb ik dit geplaatst in mijn code die er dan alsvolgt uitziet:
__fastcall mythread::mythread(bool CreateSuspended)
: TThread(CreateSuspended)
{
//.. First time the thread starts the code here is runned
int __thread x;
}
Maar ik krijg nu een foutmelding, namelijk E2188: Expression Syntax error
Wat doe ik fout?
Mijn tweede vraag is hoe ik netjes variabelen kan doorgeven tussen threads zonder gebruik te maken van globals. Bijvoorbeeld als de tweede thread de eerste thread suspend moet de tweede thread de pointer naar de eerste weten. Hoe vertel ik hem dit?
Roland
Ik ben bezig met een protocol te schrijven in Borland C++ en daarvoor heb ik meerdere threads nodig die samen kunnen werken. Ik schrijf het protocol in een console applicatie project en gebruik thread objecten voor de threads. Nu werken de threads prima alleen snap ik het gebruik van variabelen binnen threads nog niet helemaal.
Allereest heb je een zogenaamde thread variabele die globaal moet zijn binnen een thread. Zowel op WIKI-web (http://en.wikipedia.org/wiki/Thread-local_storage) als in de Borland help staat dat zo'n variabele alsvolgt kan worden aangemaakt:
int __thread number;
of
__declspec(thread) int number;
Nu heb ik dit geplaatst in mijn code die er dan alsvolgt uitziet:
__fastcall mythread::mythread(bool CreateSuspended)
: TThread(CreateSuspended)
{
//.. First time the thread starts the code here is runned
int __thread x;
}
Maar ik krijg nu een foutmelding, namelijk E2188: Expression Syntax error
Wat doe ik fout?
Mijn tweede vraag is hoe ik netjes variabelen kan doorgeven tussen threads zonder gebruik te maken van globals. Bijvoorbeeld als de tweede thread de eerste thread suspend moet de tweede thread de pointer naar de eerste weten. Hoe vertel ik hem dit?
Roland
