摘要:
1 //生产者消费者问题 2 //使用事件和互斥量实现 3 //缓冲区只能放一个产品 4 5 //有人可能疑问,为什么不能用两个互斥量来实现同步, 6 //像使用两个事件一样。因为互斥量具有线程所有的概念, 7 //等待函数执行后,互斥量会保存当前线程id,表示这个互斥量属于这个线程。 8 //当你在另一个线程Release这个互斥量时,因为互斥量保存的线程ID与当前 9 //线程ID不一致,操作将返回FALSE。10 #include 11 #include 12 13 //互斥量14 HANDLE g_hMutex;15 //事件16 HANDLE g_hEventBufferEmpt.. 阅读全文
摘要:
//生产者消费者问题//使用信号量和互斥量实现//信号量用于同步:缓冲区有产品,消费者才能取;缓冲区有空位置,生产者才能放入。//互斥量用于互斥:生产者和消费者不能同时访问缓冲区////缓冲区容量为4#include #include //互斥量HANDLE g_hMutex;//信号量HANDLE g_hSemA; //表示空缓冲区个数HANDLE g_hSemB; //非空缓冲区个数//缓冲区 4个int g_Buffer[4]; int g_i, g_j;DWORD WINAPI ProducterThreadFunc(PVOID pM){ int i; for(i = 1; i... 阅读全文
摘要:
1 //生产者消费者问题 2 //使用事件和临界区实现 3 //缓冲区只能放一个产品 4 5 #include 6 #include 7 8 9 //临界区10 CRITICAL_SECTION g_cs;11 //事件12 HANDLE g_hEventBufferEmpty, g_hEventBufferFull; 13 //缓冲区,只能放一个产品14 int g_Buffer; 15 16 DWORD WINAPI ProducterThreadFunc(PVOID pM)17 {18 int i;19 for(i = 1; i <= 10; i++)... 阅读全文