Dea*_*dMG 6 c++ multithreading doublebuffered
当双缓冲由于在线程之间共享的数据时,我使用了一个系统,其中一个线程从一个缓冲区读取,一个线程从另一个缓冲区读取并从第一个缓冲区读取.麻烦的是,我将如何实现指针交换?我需要使用关键部分吗?没有可用的互锁功能实际交换值.我不能从缓冲区1读取一个线程,然后从缓冲区2开始读取,在读取过程中,这将是appcrash,即使其他线程没有开始写入它.
我在Visual Studio Ultimate 2010 RC中使用Windows上的本机C++.
使用关键部分是可接受的方式.只需CRITICAL_SECTION在所有线程之间共享一个对象,EnterCriticalSection并LeaveCriticalSection在指针操作/缓冲区读/写代码周围调用该对象.尝试尽快完成关键部分,尽可能多地将代码留在关键部分之外.
即使您使用双重互锁交换技巧,您仍然需要一个关键部分或某些东西来同步您的线程,因此也可以将它用于此目的.