| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 536 人关注过本帖
标题:createthread函数的问题
只看楼主 加入收藏
lyl930130
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:323
专家分:111
注 册:2013-5-13
结帖率:91.43%
收藏
已结贴  问题点数:20 回复次数:2 
createthread函数的问题
初学端口转发,看htran的代码,有这一段:
程序代码:
while(1)
{
...
hThread=CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)transmitdata,(LPVOID)&sock,0,&dwThreadID);
if(hThread==NULL)
{
    TerminateThread(hThread,0);
    return ;
}
...
}

想问的是,这个到底是一直建立新的线程,线程不断变多,还是一直用的同一个线程?
2015-08-28 11:41
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:20 
线程不断变多
但你的代码有点儿奇怪,if(hThread==NULL)后竟然TerminateThread(hThread,0),你自己想想吧

另外,在古老的VC上,最好也用 _beginthreadex 而不是 CreateThread,因为这涉及到crt初始化的问题。

当然了,这些都是私有函数,如果你的编译器支持现代的C语言或C++语言
当然应该在C中用 thrd_create,在C++中用 std::thread,她们是标准的,可移植的
2015-08-28 11:50
lyl930130
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:323
专家分:111
注 册:2013-5-13
收藏
得分:0 
回复 2楼 rjsp
这个代码就是htran  1.0版本中bind2bind函数。
师傅让我看的,第一次接触端口转发的函数,看一个函数不认识,查一个函数,看的头大。

我是这么理解的:
如果线程开启失败,直接返回主函数,该干嘛干嘛,要重新启动就重新启动
如果线程开启成功了,就一直无限开下去,直到失败?那不会把资源都占满吗?

为什么这么干还是不理解
2015-08-28 16:53
快速回复:createthread函数的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.072613 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved