社区
进程/线程/DLL
帖子详情
线程,线程内核对象,线程句柄与线程ID
zhzh0501
2007-05-09 07:18:20
线程内核对象是用来管理线程的数据结构,我对下面几个问题不清楚,请大家指教:
1.通常所说的线程句柄到底是标识线程的还是标识线程的内核对象的?当调用
CloseHandle()时是释放线程的资源还是线程内核对象的资源?
2.同样,线程的ID到底是什么东西?是标识线程的还是标识线程内核对象的?和句柄有什么区别?
3.线程内核对象是管理线程的,能在线程结束前释放内核对象的资源吗?
4.什么是线程的受信状态和未受信状态?
我是菜鸟,不要笑我.
...全文
341
2
打赏
收藏
线程,线程内核对象,线程句柄与线程ID
线程内核对象是用来管理线程的数据结构,我对下面几个问题不清楚,请大家指教: 1.通常所说的线程句柄到底是标识线程的还是标识线程的内核对象的?当调用 CloseHandle()时是释放线程的资源还是线程内核对象的资源? 2.同样,线程的ID到底是什么东西?是标识线程的还是标识线程内核对象的?和句柄有什么区别? 3.线程内核对象是管理线程的,能在线程结束前释放内核对象的资源吗? 4.什么是线程的受信状态和未受信状态? 我是菜鸟,不要笑我.
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
2 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
zjh824
2007-05-09
打赏
举报
回复
CloseHandle()只是将线程内核对象引用计数减1,并不释放资源,当引用计数为0时WINDOWS会清理线程的资源.
受信和未受信只是一种说法,即线程中调用了等待函数WaitforSingleObject等,当等待的内核对象触发时,线程就会获得CPU的执行权得以运行,即受信.否则线程处于阻塞状态,是不耗CPU的,未受信.
ghyd
2007-05-09
打赏
举报
回复
1 标识内核对象的. 释放线程和线程内核对象不用closehandle
2 标识线程. 标识的东西不同.
3 不能
4 不知道什么是"受信".
5 有不当之处 欢迎执教
代码客:G-Socket(IOCP) 1.0 (Server/Client)例程源码+Server体验程序+强大的压力测试工具
结构层次及相互联系 (1)、工作
线程
:响应连接的IO投递返回并负责投递读请求,并将IO返回结果投递给处理
线程
,可设定参数决定工作
线程
数量; (2)、处理
线程
:处理
线程
调用回调函数将信息传递给应用层或协议栈,可设定参数决定工作处理数量; (3)、看守
线程
:响应Accept事件调用AcceptEx,检测连接和心跳超时 ,将信息投递给工作
线程
,模块仅有一个看守
线程
。 1. 技术要求 (1)、
线程
同步:Lock指令、临界段; (2)、主要Socket API:WSASend、WSARecv、AcceptEx、DisconnectEx; (3)、内存管理:连接池(
句柄
重用)、内存池; (4)、数据0拷贝:通过内置处理
线程
,上层应用可以避免自建
线程
池及复制数据的过程。同时提供GBuf内存分配功能,应用层获得分配地址及填充数据之后亦可直接投递给
内核
/驱动层; (5)、数据顺序同步:同一个连接同时只有一个处理
线程
响应其IO事件; (6)、IO请求投递:单投递读、多投递写; (7)、0缓冲读投递:可条件编译实现,以适用大规模连接要求。 (8)、超时机制:可设置空连接(连接不发送数据)超时时间以防止DOS攻击,也可设置心跳超时时间防止网络故障导致的现有连接成为虚连接避免耗尽系统资源。 (9)、接口技术:API、回调函数、客户
句柄
(客户连接
句柄
)。 (10)、主、被动发送:不使用HASH、MAP及LIST技术,即可提供安全可靠高效的客户连接
句柄
,以实现服务器端主被动发送数据功能; (11)、PerHandleData的回收不以IO投递的计数器或链表来做依据但仍能安全回收,同时尽量避免在高频的读写操作时做其他无关的操作以提高读写效率。 (12)、处理
线程
和工作
线程
有着良好分工界限,繁重的工作交给处理
线程
完成,工作
线程
工作量最大限度的减少,仅响应投递返回及读投递的操作; (13)、支持AWE,模块自动识别AWE是否开启(需手动开启),“否”则使用虚拟内存机制。 2. 功能要求 (1)、多IP多端口监听,每个监听可设置不同的回调函数,以高效的区别处理数据 (2)、可设置每秒最大的连接并发量和空连接(连接不发数据)超时时间以防止DOS攻击造成的服务瘫痪、具有心跳处理(防网络异常造成的虚连接)功能 (3)、不加协议的透明传输,可适用广泛的网络通讯环境 (4)、可现实主、被动发送数据,但不会因兼顾主动发送而额外增加降低效率的工作 (5)、内置处理
线程
,上层应用可不必自建
线程
池处理数据,所有IO事件按顺序调用回调函数并可以在回调函数内直接处理数据,不必担心多
线程
造成的接收数据乱序的问题。 (6)、高效率的数据对应关联机制,在初次连接并根据登录数据设置每个连接对应的宿主(Owner)之后,再接收的数据即可立即获得该连接对应的宿主,而不必再做额外的查询工作,并且模块内部采用的是指针关联方式,对于长连接、主动发送的服务器系统而言是高效率的。 (7)、可兼容IPv6 3. 注意事项 因硬件环境和应用环境不同,不合理的配置会出现效率及性能上的问题,因此以下情况出现时,请务必与作者联系以确保获得更好的参数配置: (1)、连接量超过1000个的。超过的应结合具体硬件配置和网络带宽等因素综合设定运行参数。 (2)、带宽使用率超过20%的。工作
线程
和处理
线程
数量的设置也是综合考虑数据吞吐量和数据处理负载的因素来设置的,过多的
线程
会在调度上浪费时间,同时也应该综合考虑
线程
优先级别来设置工作
线程
和处理
线程
数量,两者的设置也不一定能相等。 (3)、服务器端有主动发送需求的、短连接(含网络故障造成的连接断开)出现频率高的。 压力测试工具介绍: 一、 使用G-TcpClient模块 二、 可以设定间隔时间发起大规模长、短连接 三、 可以发起密集数据包,包括即时和定时发送,1M的光纤带宽最大可以达到100K/S(单向)以上,100M本地网最大可以达到10M/S(单向)以上 四、 数据发送仅由一个独立
线程
但当,每点击一次Connect就创建一个
线程
根据当前参数发起连接。 五、 测试前提:服务器接收客户端数据后立即原样返回给客户端
线程
、
线程
句柄
、
线程
ID
在windows系统中,
线程
的
id
是唯一对应的,也就是说,如果两个
线程
返回相同的
id
,则他们必然是同一
线程
,反之一定是不同的
线程
。而
线程
的
句柄
并不是
线程
的唯一标识,
线程
的
句柄
只是用来访问该
线程
的的一个32位值,尽管相同的
句柄
一定标识同一
线程
,但同一
线程
可能拥有两个打开的
句柄
,因此,不能用
句柄
来区分两个
线程
是否是同一
线程
。在 Windows 中,大多数
对象
是由包含创建这些
对象
的
线程
的进程拥有的。当一个
线程
终止运行时,在与它相关联的
线程
内核
对象
的所有未结束的引用关闭之前,该
内核
对象
不会自动被释放。
MT5 非区间均线回归刷单EA教学
面向
对象
,面向函数式编程! //--- 交易.追踪止损(Symbol(),追踪点值,magic号码); 指标.
句柄
至数组(指标.
句柄
A,小均值,0,iBars(Symbol(),应用周期),true); 指标.
句柄
至数组...
线程
ID
与
线程
句柄
有啥不同
当某个程序创建一个
线程
后,会产生一个
线程
的
句柄
,
线程
的
句柄
主要用来控制整个
线程
的运行,例如停止、挂起或设置
线程
的优先级等操作。
线程
句柄
与
线程
ID
的区别: ●CreateThread() API 用于创建
线程
。 API 返回同时
线程
句柄
和
线程
标识符 (
ID
)。
线程
句柄
有完全访问权创建
线程
对象
。 运行
线程
时
线程
ID
唯一标识
线程
在系统级别。 ●
ID
是在Windows系统范围内唯一标示Thread的。 ●Handle是用来操作Thread的,可以有多个,每个HANDLE可以有不同的操作权限,在不同进程O
C++系列 ---
线程
内核
对象
一、
线程
内核
对象
线程
内核
对象
就是一个包含了
线程
状态信息的数据结构。每次对CreateThread函数的成功调用,系统都会在内部为新的
线程
分配一个
内核
对象
。系统提供的管理
线程
的函数就是依靠访问
线程
内核
对象
来管理实现的。
线程
内核
对象
结构
线程
创建
内核
对象
时,系统对它的各个成员进行初始化 1>
线程
上下文
句柄
每个
线程
都有自己的一组CPU寄存器,成为
线程
的上下文。这组寄存器的值...
进程/线程/DLL
15,471
社区成员
49,182
社区内容
发帖
与我相关
我的任务
进程/线程/DLL
VC/MFC 进程/线程/DLL
复制链接
扫一扫
分享
社区描述
VC/MFC 进程/线程/DLL
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章