易截截图软件、单文件、免安装、纯绿色、仅160KB

Windows Via C/C++: CreateThread函数

CreateThread函数
前面讲过,进程的主线程会在CreateProcess调用时自动创建。假如你要手工创建线程,你可以调用CreateThread函数:
HANDLE CreateThread(
PSECURITY_ATTRIBUTES psa,
DWORD cbStackSize,
PTHREAD_START_ROUTINE pfnStartAddr,
PVOID pvParam,
DWORD dwCreateFlags,
PDWORD pdwThreadID);
系统在调用CreateThread时创建一个线程内核对象,线程内核对象并非线程本身,它是操作系统用来管理线程的数据结构,其中包含线程的统计信息。这与进程和进程内核对象的关系是类似的。
系统从进程的地址空间中为线程栈分配空间。新的线程和创建它的线程运行在同样的进程上下文中,因此新线程可以访问进程的句柄表、地址空间以及其它处在同一进程上下文中的所有线程的堆栈,这使得同一进程内的多个线程相互通信变得极为简单。
注意 CreateThread函数是用来创建线程的Windows API函数。假如你使用C/C++代码创建新线程,你应该避免使用CreateThread,而用微软C++运行时库函数_beginthreadex代替。本章稍后会讲到_beginthreadex函数并解释用它代替CreateThread的原因。
下面我们来看看CreateThread的参数。
psa
psa是SECURITY_ATTRIBUTES结构的指针,向其传递NULL表示创建的线程内核对象使用默认的安全属性。如果想让新线程内核对象的句柄能被子进程继承,你应该为其传递一个SECURITY_ATTRIBUTES结构的指针,并将bInheritHandle域设置为TRUE,第3章对此有详细的说明。
cbStackSize
[关于cbStackSize的解释参考了MSDN,与原文有出入,参阅http://msdn.microsoft.com/en-us/library/ms686774%28VS.85%29.aspx
]
每个线程的堆栈由预留(reverse)空间和系统最初为其提交(commiteted)的页面空间组成。预留空间的大小表示系统在进程的虚拟地址空间中为线程栈分配的总大小,因此预留空间的大小受进程地址空间大小的制约。初始提交的页面空间使用时才会载入内存,如果线程运行时所需的空间超过初始提交的页面空间大小,系统会从线程保留空间中为其继续提交页面文件,直到线程的预留空间仅剩下一页大小,这一页作为“哨兵”用来防止线程栈的溢出,不能在程序中使用。
当线程函数退出或调用ExitProcess时,相应的线程栈会被销毁,如果线程是由其它线程终止的,其线程栈会一直存在直至进程终止。
线程预留空间和初始提交页面的大小是在可执行文件的头部定义的。默认的预留空间大小是1MB,初始提交页面大小为8K。手动


相关文档:

VB/C++/C#串口通讯源代码【附详细注释】


VB
    If MSComm1.PortOpen = True Then MSComm1.PortOpen = False
    MSComm1.CommPort = i1
    MSComm1.PortOpen = True
    MSComm1.InputMode = comInputModeBinary
    MSComm1.InBufferCount = 0
& ......

SQLite C/C++接口介绍

这篇文章是使用SQLite C/C++接口的一个概要介绍和入门指南。
由于早期的SQLite只支持5个C/C++接口,因而非常容易学习和使用,但是随着SQLite功能的增强,新的C/C++接口不断的增加进来,到现在有超过150个不同的API接口。这往往使初学者望而却步。幸运的是,大多数SQLite中的C/C++接口是专用的,因而很少被使用到。尽管有这 ......

Delphi 与 C/C++ 数据类型对照表

Delphi 与 C/C++ 数据类型对照表
Delphi数据类型C/C++
ShorInt
8位有符号整数
char
Byte
8位无符号整数
BYTE,unsigned short
SmallInt
16位有符号整数
short
Word
16位无符号整数
unsigned short
Integer,LongInt
32位有符号整数
int,long
Cardinal,LongWord/DWORD
32位无符号整数
unsigned long
Int6 ......

经典C/C++面试题

1.介绍一下STL,详细说明STL如何实现vector。
Answer:
     STL (标准模版库,Standard Template Library)它由容器算法迭代器组成。
     STL有以下的一些优点:
     可以方便容易地实现搜索数据或对数据排序等一系列的算法;
 &nb ......

【推荐】C和C++语言学习总结(可以应对面试的题目)

C和C++语言学习总结(资料来自 <高质量C++/C 编程指南> 林锐博士 2001 年7 月24)
知识结构:
1、if,for,switch,goto
2、#define,const
3、文件拷贝的代码,动态生成内存,复合表达式,strcpy,memcpy,sizeof
4、函数参数传递,内存分配方式,内存错误表现,malloc与new区别
5、类重载、隐藏与覆盖区别,extern问题, ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号