首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

多线程有关问题,各位帮忙看一下

2012-03-22 
多线程问题,各位帮忙看一下以下程序运行时内存出错,各位帮忙看下原因#include windows.h#includeiostre

多线程问题,各位帮忙看一下
以下程序运行时内存出错,各位帮忙看下原因
#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下一切正常,输出:

C/C++ code
main is running01234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991Process returned 0 (0x0)   execution time : 4.366 sPress any key to continue.
[解决办法]
list <int> li; 是全局资源,你怎么在2个线程间不加任何同步措施就这么用呢?


[解决办法]
线程同步的问题..

热点排行