多线程问题,各位帮忙看一下
以下程序运行时内存出错,各位帮忙看下原因
#include <windows.h>
#include<iostream>
#include <list>
using namespace std;
list<int> li;
list<int>::iterator iter;
static DWORD WINAPI thread(LPVOID)
{
//Sleep(100);
for (;; )
{
if (li.size() != 0)
{
iter = li.begin();
cout << *iter << endl;
li.pop_front();
}
}
cout<<"main is running"<<endl;
return 0;
}
int main()
{
CreateThread(NULL, NULL, thread, NULL, NULL, NULL);
list<int>::iterator iter;
int i;
for (i = 0; i < 100; i++)
{
li.push_back(i);
}
cout<<"main is running"<<endl;
cin >> i;
return 0;
}
[解决办法]
你用什么编译器?我用GCC,在CodeBlocks下一切正常,输出:
main is running01234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991Process returned 0 (0x0) execution time : 4.366 sPress any key to continue.
[解决办法]
list <int> li; 是全局资源,你怎么在2个线程间不加任何同步措施就这么用呢?
[解决办法]
线程同步的问题..