线程有自己的践,是分配CPU的单位
解决方案 »
- vc2005编译 Kriging 算法实现 2维和3维地图等高线 问题
- 如何检测操作系统是windows2003还是vista
- EVC SDK下模拟 创建MFC消息处理结构,消息分发问题,高手请进!
- 如何在vc中使用c的函数库例如 clrscr(),gotoxy; 等函数
- 在用COMBOX控件时,在没有内容的情况下,点“下拉”为什么只出来一条黑边儿?
- 怎么样取得cstring中的字符问题!~!~
- 郁闷,hook api遇到的问题
- 等到你拿分:我需要在屏幕上打点
- 基于对话框的ActiveX控件为什么会冻结
- 有多线程 调试
- 如何在VC中调用VB开发的COM(ActiveX Dll)?
- 关于NT下的TAPI的一个问题
当系统启动一个程序时,首先建立一个进程,然后分配4G的地址空间,将程序所需的一切资源,包括代码调入内存,然后用一个数据结构PDB管理此进程。PDB中一个域记录所属线程,进程可以启动线程,然后记录在域中,系统通过线程实现对进程所管理资源的控制,其中windows的消息队列就在线程一级。
PDB中记录线程的域是一个TDB链表的指针吗?系统调度的时候就是通过这个域来控制线程的吗?还有一个问题,进程的堆、栈与下属线程的堆、栈是一个什么样的关系,堆是共有的,栈是每个线程都有一个吗?因为如果线程是系统分配cpu的单位的话,应该有私有的栈吧。C runtime 函数创建的线程也有消息队列吗?
还是一个socket下建一个到几个线程初级问题,还亲指教!
一个“TCB”中的典型内容有:CONTEXT(cpu状态)、返回值、Execption Handlers、消息队列、优先级、TLS slots等内容,但像Kernel Handle Table这样的内容只有PCB有,也就是说,Kernel“句柄”是按进程维护的,而不是按线程。
无论用C RTL还是API创建的线程,只要是运行在WIndows环境下,就是Windows线程,就都有相同的TCB结构,因此都可以有消息队列。只是缺省情况下,WIndows不会为每个线程都创建消息队列,只有线程“需要”时(例如调用了CreateWindow或PeekMessage),Windows才会为它创建一个。
但是线程没有Address Space,所有线程共享Process的Address Space,这就是为什么线程间能通过全局变量实现共享;同时线程又有自己的栈,这就是为什么线程的局部变量能够互不干扰。
异步socket是什么意思,如何使用?
不用一个socket一个线程:是不是多个socket共用一个线程,如果这样的话,如何协调线程内的各socket?