+ -
当前位置:首页 → 问答吧 → AfxBeginThread 产生的线程为什么不立即执行?

AfxBeginThread 产生的线程为什么不立即执行?

时间:2011-12-13

来源:互联网

AfxBeginThread(myThreadFunc,this,0,0,0,NULL);//启动线程函数
AfxBeginThread(myThreadFunc,this,0,0,0,NULL);//启动线程函数
AfxBeginThread(myThreadFunc,this,0,0,0,NULL);//启动线程函数
AfxBeginThread(myThreadFunc,this,0,0,0,NULL);//启动线程函数

//myThreadFunc是线程函数,定义如下,向vector容器添加六个字符串


UINT CScan::myThreadFunc(LPVOID pParam){

CScan *p_scan=(CScan*)pParam;

p_scan->testing_url_vector.push_back("111");
p_scan->testing_url_vector.push_back("222");
p_scan->testing_url_vector.push_back("333");
p_scan->testing_url_vector.push_back("444");
p_scan->testing_url_vector.push_back("555");
p_scan->testing_url_vector.push_back("666");

return 0;
}

可是当执行后,检测vector的大小只有18,应该为24才对,如果只启动一个线程,vector大小就是0,很困惑

作者: logan0429   发布时间: 2011-12-13

为什么24才对?
p_scan->testing_url_vector.push_back("111");
执行后,vector大小是多少?

作者: ddlddy   发布时间: 2011-12-13

1 多线程要考虑资源安全
2 多线程调用同一个线程函数,会怎么进行
3 你调试的正确吗

作者: kuyucman   发布时间: 2011-12-13