20. november 2006 - 23:00
Der er
2 kommentarer
Threads og mailboxes.
Hej.
Er der nogen der gider at give mig et meget simpelt eksempel på brug af en mailbox der bruges af flere tråde?
Der må meget gerne være semaphorer med i eksemplet også.
Og kis (keep it simpel) :-) Det lærer jeg det vist bedst ved.
VH Ulrik
20. november 2006 - 23:26
#2
Og stort set det samme, med semaphor:
#include <windows.h>
#include <stdio.h>
HANDLE Semaphore = CreateSemaphore(0, 0, 1, "MyTestSemaphore");
DWORD WINAPI ThreadProc(LPVOID lpParameter)
{
int i = 0;
DWORD MainThread = (DWORD )lpParameter;
MSG msg;
printf("Slave Thread Started\n");
ReleaseSemaphore(Semaphore, 1, 0);
do
{
PostThreadMessage(MainThread, 1001, 0, 0);
GetMessage(&msg, NULL, 0, 0xFFFF);
printf("Slave Received: %d\n", msg.message);
}
while(i++ < 10);
PostThreadMessage (MainThread, 1002, 0, 0);
return 0;
}
int main(void)
{
DWORD SlaveThreadId;
DWORD MainThreadId = GetCurrentThreadId();
MSG msg;
CreateThread(NULL, 0, ThreadProc, (LPVOID )MainThreadId, 0, &SlaveThreadId);
if(!MainThreadId || !SlaveThreadId)
{
printf("Thread error!\n");
return 0;
}
// Wait for the thread to release the semaphore
WaitForSingleObject(Semaphore, INFINITE);
do
{
GetMessage(&msg, NULL, 0, 0xFFFF);
printf("Master Received: %d\n", msg.message);
PostThreadMessage(SlaveThreadId, 1000, 0, 0);
}
while(msg.message != 1002);
return 0;
}