生产者—消费者问题

来源:百度知道 编辑:UC知道 时间:2024/07/16 05:07:23
有A,B,C,D四个线程共享一个缓冲区,其中A是生产者线程负责向缓冲区送数据,B,C,D是消费者线程需要从缓冲区中取数据。A每送一次数据,B,C,D必须都取一次后A才能再向缓冲区中送数据。要求B,C,D从缓冲区中取数据时必须是互斥进行的。
--------------这个用c或c++怎么做啊??哪位会的帮帮忙!!
Microsoft Visual C++ 6.0
源代码.
谢谢~~

#include <windows.h>
#include <stdio.h>

HANDLE ghMutex;

DWORD WINAPI BReadThread( LPVOID lpParam )
{
DWORD dwWaitResult;
// Sleep(500);
dwWaitResult = WaitForSingleObject(ghMutex, INFINITE);

switch (dwWaitResult)
{

case WAIT_OBJECT_0:
/* 这里添加实际的read函数 ,例如printf g_i;*/
printf("Thread B finished read buff...\n");
ReleaseMutex(ghMutex);
break;

case WAIT_ABANDONED:
printf("thread b wait abandoned\n");
return FALSE;

}
return TRUE;
}

DWORD WINAPI CReadThread( LPVOID lpParam )
{
DWORD dwWaitResult;

dwWaitResult = WaitForSingleObject(ghMutex, INFINITE);

switch (dwWaitResult)
{

case WAIT_OBJECT_0: