有两个线程
其中一个需要不断对Set容器做查找
另一个线程不断对Set容器做修改
执行之后不时在xtree.cpp:1592 这个地方报错 代码C0000005
有时后却没报错 能正常运行 不确定是不是多线程的问题
尝试过给代码加上临界区 可是这样子会造成程序卡死
有没有可行的解决办法
代码大概长这个样子
void thread1()
{
while (true)
{
arrow->insert(VK_END);
Sleep(100);
arrow->insert(VK_ESCAPE);
Sleep(100);
arrow->insert(VK_ADD);
Sleep(100);
arrow->clear();
Sleep(100);
arrow->insert(VK_END);
Sleep(100);
arrow->insert(VK_ESCAPE);
Sleep(100);
arrow->erase(VK_END);
Sleep(100);
arrow->insert(VK_ADD);
Sleep(100);
arrow->erase(VK_ESCAPE);
Sleep(100);
arrow->erase(VK_ADD);
Sleep(100);
if (!enable)
break;
}
}
void thread2()
{
while (true)
{
if (arrow->empty())
continue;
if (arrow->find(VK_END) != arrow->end());
if (arrow->find(VK_END) == arrow->end());
if (arrow->find(VK_ESCAPE) != arrow->end());
if (arrow->find(VK_ESCAPE) == arrow->end());
if (arrow->find(VK_ADD) != arrow->end());
if (arrow->find(VK_ADD) == arrow->end());
if (!enable)
break;
}
}