STL文档说了——vector它不支持多线程,利用以下的代码亲测, 如果是仅仅读取vector中的数据,或者是改变元素的值 多线程没有问题。
如果是添加或删除元素,则多线程肯定出问题,需要自己同步。
#include <windows.h>
#include <process.h>
#include <vector>
using namespace std;
#define N 5
vector <int> vec;
//修改vector
UINT WINAPI ThreadWrite(void *p )
{
for (int i = 0; i < 20000; ++i)
{
printf("W %d -- %d\n", p, vec[i]=1);
}
return 0;
}
//添加vector
UINT WINAPI ThreadAdd(void *p)
{
for (int i = 0; i < 20000; ++i