测试提出的问题中有一个功能在多次点击后会出现崩溃。
开始没发现问题,因为我对于线程结束用bool值标记过,稳定崩溃,崩溃的位置各不相同。
后来仔细看发现有一行代码
::PostMessage(g_pAnalyView->GetSafeHwnd(), WM_USER_IMPORT, 0, 0);
其中调用的消息对应的函数在开启线程中有用到同一数据的情况,而所用数据并未加锁保护。
因此导致了程序崩溃。
为了避免这个问题,给对应的数据加上mutex。通过这个互斥量来控制数据的权限。
测试提出的问题中有一个功能在多次点击后会出现崩溃。
开始没发现问题,因为我对于线程结束用bool值标记过,稳定崩溃,崩溃的位置各不相同。
后来仔细看发现有一行代码
::PostMessage(g_pAnalyView->GetSafeHwnd(), WM_USER_IMPORT, 0, 0);
其中调用的消息对应的函数在开启线程中有用到同一数据的情况,而所用数据并未加锁保护。
因此导致了程序崩溃。
为了避免这个问题,给对应的数据加上mutex。通过这个互斥量来控制数据的权限。