有两个线程使用AfxBeginThreads启动并按照所示的方式进行同步。如何使用Createevent,SetEvent..etc正确同步它们?我可以看到调用每个事件的实际代码顺序吗?它似乎有效但可能不是正确的实现。
volatile unsigned char r = 0;
DWORD thread1(Lpvoid ...)
{
WritetoBuffer
r=1;
}
DWORD thread2(Lpvoid ...)
{
if(r==1)
ReadsBuffer
r=0;
}
答案 0 :(得分:0)
你的问题不清楚完全你想要实现的目标:thread1
只写一次,thread2
只读一次吗?或thread1
经常写,而thread2
经常读?
您可能想查看维基百科上Producer-Consumer problem的说明。该页面甚至包含一个C ++实现(它使用新的C ++ 11特性,因此您可能无法编译它),它应该让您了解如何使用MFC和Win32 API实现它。
您还可以在CodeProject上查看Using Semaphores: Multithreaded Producer/Consumer。本文提供了一个使用Windows API函数的实现,并很好地解释了这种情况。
我希望这会有所帮助。