ik heb 2 threads die natuurlijk gelijktijdig lopen. Nu moet ik iets maken dat de eerste thread de tweede thread een signaal of event geeft nadat de eerste thread geinitialiseerd is. Maar het grote probleem is dat ik niet weet hoe of waarmee. Zijn daar events voor in C Builder
mutex
Yo dawg, I heard you like posts so I posted below your post so you can post again.
Verwijderd
De Win32 API heeft daar verschillende opties voor. Voor wat jij wilt kun je idd het beste een event gebruiken. Error checking kun je er zelf wel bij verzinnen.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
| HANDLE hMyThread;
DWORD nMyThreadId;
HANDLE hMyEvent;
void CreateMyThread()
{
hMyEvent = CreateEvent(NULL, true, false, NULL);
hMyThread = CreateThread(NULL, 0, MyThread, (void*)0, 0, &nMyThreadID);
// Wait until the other thread is ready
WaitForSingleObject(hMyEvent, 10000);
} |
code:
1
2
3
4
5
6
7
8
9
10
11
| DWORD WINAPI MyThread(LPVOID hMyThread)
{
// Initialisation
// Wake main thread
SetEvent(hMyEvent);
// Whatever
return 0;
} |
Wat voor signaal, wat moet de tweede thread daarna wel/niet doen ?Op woensdag 19 december 2001 10:07 schreef simenon het volgende:
ik heb 2 threads die natuurlijk gelijktijdig lopen. Nu moet ik iets maken dat de eerste thread de tweede thread een signaal of event geeft nadat de eerste thread geinitialiseerd is. Maar het grote probleem is dat ik niet weet hoe of waarmee. Zijn daar events voor in C Builder
Als de tweede thread moet wachten - mutex claimen in thread 1 voordat thread2 start, thread2 mutex laten claimen en mutex vrijgeven vanuit thread1.
Als de tweede thread moet stoppen met periodieke activiteit - In de loop mutex claimen (met timeout) & vrijgeven. Vanuit thread 1 mutex claimen. Op timeout in thread2 beslissen wat je nu wil.
Etc.
Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein
thread 1 en thread 2 starten tegelijk met lopen. Op een gegeven moment heeft thread 2 informatie nodig is die gedefinieerd wordt in thread 1. Thread 2 moet dus even wachten totdat thread 1 die informatie heeft gedefinieerd voordat deze verder kan. Als dat gebeurt is kunnen beide threads verder lopen.Op woensdag 19 december 2001 22:27 schreef MSalters het volgende:
[..]
Wat voor signaal, wat moet de tweede thread daarna wel/niet doen ?
Als de tweede thread moet wachten - mutex claimen in thread 1 voordat thread2 start, thread2 mutex laten claimen en mutex vrijgeven vanuit thread1.
Als de tweede thread moet stoppen met periodieke activiteit - In de loop mutex claimen (met timeout) & vrijgeven. Vanuit thread 1 mutex claimen. Op timeout in thread2 beslissen wat je nu wil.
Etc.
Het is in ieder geval opgelost door gebruik te maken van events.