-1

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

volatile  unsigned char r = 0;

    DWORD thread1(Lpvoid ...)
    {
        WritetoBuffer
        r=1;
    }

    DWORD thread2(Lpvoid ...)
    {
        if(r==1)
        ReadsBuffer
        r=0;
    }
4

1 回答 1

0

您的问题不清楚您达到的目标:thread1只写一次,thread2只读一次吗?还是thread1不断地写,而thread2不断地读?

您可能想查看wikipedia 上对生产者-消费者问题的描述。该页面甚至包含一个 C++ 实现(它使用新的 C++11 功能,因此您可能无法编译它),它应该让您了解如何使用 MFC 和 Win32 API 来实现它。

您还可以查看使用信号量:CodeProject 上的多线程生产者/消费者。文章提供了一个使用 Windows API 函数的实现,很好地解释了这种情况。

我希望这个对你有用。

于 2012-12-20T11:44:56.397 回答