它以什么方式失败?我不熟悉wxtctrl,但除非它内置了同步(即线程安全),否则这可能是一个大问题。保护这种单一资源的最简单方法是通过一个名为“mutex”的方法。下面的示例是您可以在每个线程中执行的操作,以确保一次只有一个线程访问该资源(输出窗口)。
// In each thread's initialization:
HANDLE mutexHandle = CreateMutex(0,FALSE,"__my_protecting_mutex__");
// Whenever you use the debug output:
WaitForSingleObject(mutexHandle, /* Timeout if you like. */ 0xFFFFFFFF );
// Do our printing here.
ReleaseMutex(mutexHandle);
// In each thread's cleanup:
CloseHandle(mutexHandle);
所以这基本上保证了在等待和释放之间只能有一个线程。现在,如果您的问题实际上是路由到wxtctrl,我需要更多的细节。
编辑:
我刚刚意识到我发布的是特定于Windows的,也许你不在Windows上!如果你没有,我没有其他平台同步方法的经验,但是Boost有一些非平台特定的通用库。