Visual c++ 正确同步两个线程

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 .

获得了两个线程,它们是使用AfxBeginThreads启动的,并已同步,如图所示。如何使用Createevent、SetEvent等正确同步它们?我可以查看调用每个事件的实际代码顺序吗?。它似乎有效,但可能不是正确的实施方式

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函数的实现,并很好地解释了这种情况


我希望这会有所帮助。

写和读是连续的。缓冲区是环缓冲区的一部分。那么我想你应该阅读我提供的链接。这两种方法都将为您提供关于如何实施这一点的好主意。