2 tabuainiwoai tabuainiwoai 于 2016.01.29 23:49 提问

关于多线程的疑问,求各位大神解答

```using namespace std;

DWORD WINAPI Thread_accept (PVOID lParam)
{
cout<<"进入线程"<<endl;

return 0;

}

int main()
{
WSADATA wsaData;
WSAStartup (MAKEWORD (2, 2) ,&wsaData);

HANDLE Thread;

Thread = CreateThread ( NULL ,0 ,Thread_accept ,NULL ,0 ,NULL);

return 0;

}

为什么最后输出的时候子线程并不执行输出语句?
求各位大神解答

6个回答

wqx_163
wqx_163   2016.01.30 08:59
已采纳

main函数中,仅仅是通过createthread()创建一个线程,之后的动作就是return,所以不输出子线程的内容是很正常的。
若是你想让子线程输出内容,需要在main和子线程之间通信上做文章,
比如,
1. 定时探测子线程是否退出,若已退出,main再退出。
2. 声明一个全局变量,当子线程执行时赋值为1 ,main中判断该全局变量是否已变为1,若是,则退出。
还有很多其他方法!
希望我的解答,对你有所启发!

caozhy
caozhy   Ds   Rxr 2016.01.30 06:22

在return前加上WaitForSingleObject(Thread, INFINITE);

coding_hello
coding_hello   2016.01.30 08:00

HANDLE Thread;

Thread = CreateThread ( NULL ,0 ,Thread_accept ,NULL ,0 ,NULL);

Sleep(3000); //给线程足够时间运行完再退出。

return 0;

qq_26968975
qq_26968975   2016.01.30 00:17

为什么不用_beginthread

qq_28768929
qq_28768929   2016.01.30 02:00

同时小白
类似的代码我测试过,成功了,目测没发现楼主的代码有逻辑上的错误,不过用完了没close不是个好习惯哦

PRCLionel
PRCLionel   2016.01.30 02:03

子线程还没来得及运行,main就退出了。在main最后用WaitForSingleObject等一下试试,或者简单的sleep一会。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
欢迎各位大神解答
一、课程设计的目的: 1 进一步熟悉C语言的基本理论,语法和程序结构,增强实战编程能力,为后续课程的学习和将来的工作打下良好的基础。 2 熟悉文件系统的编程方法和文件的操作过程,掌握文件系统系统函数的调用。 3 掌握在C语言中文件的类型、打开方式,读写方法及关闭。 题目:Text文件的加密/解密以及大写/小写字母转换程序设计/英文文本文件的句式自动更正   二
求各位的大神
请问各位大神android中startactivityforresult与statrtactivity的区别
vs2010+opencv2.4.9运行时候出现问题?求助各位
参考书目是OpenCV3 编程入门 程序是: # include using namespace cv; int main () { VideoCapture capture("1.avi"); while (1) { Mat frame; capture>>frame; imshow("reading video", frame); waitKey(60000);
求助各位大神,关于数组
据我所知必须要把列数先定义出来  例如:int a[][5]   我想写成 int x,y; scanf("%d",&x); scanf("%d",&y); int a[x][y]; 大概这种样子  但是是错的。求助  代码该怎么写;
求助各位大神关于Eclipse
我是新手刚学Jave,想在电脑上安装一个Eclipse,求助各位大神怎样下载安装呢?
liunx 串口通信问题,跪求各位大神解答
#include /*标准输入输出定义*/ #include /*标准函数库定义*/ #include /*UNIX标准函数定义*/ #include  #include  #include /*文件控制定义*/ #include /*PPSIX 终端控制定义*/ #include /*错误号定义*/ #include  #define STTY_DEV "/dev/ttyS
关于多线程的疑问
转自论坛的回复 1.web应用中,要对某一个任务用多线程实现,最简单的代码格式是不是必须把要执行的代码放在run方法中? WEB服务器会帮你把每个访问请求开辟一个线程,你只要按照你所开发的框架,比如tomcat会让你利用servlet这个框架来写代码。具体真的一言难尽,反正不用写到RUN中,除非你想对线程控制到极致,例如你要做测试。 2.部署在服务器上的一个网站,多个浏览器在访问同一
求大神解答!
我是个小白,最近一直在研究怎样上谷歌,都快要哭了!哪位大佬给解答一下,现在怎么翻墙啊!
新员工求大神解答
-
关于类的构造方法的疑问解答
类可以没有构造方法,但如果有多个构造方法,就应该要有默认的构造方法,否则在继承此类时,需要在子类中显式调用父类的某一个非默认的构造方法了。这句是什么意思啊?谢谢!  这种问题得从java编译器与JVM的角度才能理解透彻 首先java编译器在编译“.java”的源文件时会找出所有与源文件名相同 的“类实例初始化方法”(也就是您所说的“构造方法”), 没有参数的“类实例初始化方法”就是您所