Visual c++ 正确同步两个线程
获得了两个线程,它们是使用AfxBeginThreads启动的,并已同步,如图所示。如何使用Createevent、SetEvent等正确同步它们?我可以查看调用每个事件的实际代码顺序吗?。它似乎有效,但可能不是正确的实施方式Visual c++ 正确同步两个线程,visual-c++,mfc,Visual C++,Mfc,获得了两个线程,它们是使用AfxBeginThreads启动的,并已同步,如图所示。如何使用Createevent、SetEvent等正确同步它们?我可以查看调用每个事件的实际代码顺序吗?。它似乎有效,但可能不是正确的实施方式 volatile unsigned char r = 0; DWORD thread1(Lpvoid ...) { WritetoBuffer r=1; } DWORD thread2(Lpvoid .
volatile unsigned char r = 0;
DWORD thread1(Lpvoid ...)
{
WritetoBuffer
r=1;
}
DWORD thread2(Lpvoid ...)
{
if(r==1)
ReadsBuffer
r=0;
}
你的问题不清楚你到底想达到什么目的:
thread1
只写一次,而thread2
只读一次?还是thread1
不断写入,而thread2
不断读取
您可能想查看维基百科上的描述。该页面甚至包含C++实现(它使用新的C++ 11个特性,因此您可能无法编译它),这应该给你一个想法,说明如何使用MFC和Win32 API来实现这一点。
您还可以查看CodeProject。本文提供了一个使用WindowsAPI函数的实现,并很好地解释了这种情况
我希望这会有所帮助。写和读是连续的。缓冲区是环缓冲区的一部分。那么我想你应该阅读我提供的链接。这两种方法都将为您提供关于如何实施这一点的好主意。