Win32下的多线程技术
来源:互联网 发布:java reflection api 编辑:程序博客网 时间:2024/05/22 13:55
最直接的,就代码来说,一个线程简单的被表示为可能调用程序中其他函数的函数。程序从主线程开始,这个主线程是传统C程序中的main函数,或者windows下的winmain函数。一旦运行起来,程序可以通过在系统调用CreatThread中指定初始线程函数的名称来创建新的线程的执行。操作系统在线程之间抢占式的切换控制,和它在进程之间切换控制的方法非常类似。
每个线程可以创建一个消息队列,也可以不创建,如果希望从线程创建窗口,那么必须创建,否则,如果只是进行数据处理或者图形输出,那么不需要创建消息队列。因为无消息队列的进程无法处理消息,所以它们不会将系统挂起。唯一的限制是无消息队列的线程无法向其他的消息队列中的窗口发送消息,或者调用任何发送消息的函数(不过,它们可以讲消息传递给消息队列线程)。
1.创建新的执行线程的API函数是CreatThread,它的语法如下:
MSDN中CreateThread原型:
HANDLE CreateThread(
LPSECURITY_ATTRIBUTES lpThreadAttributes,
DWORD dwStackSize,
LPTHREAD_START_ROUTINE lpStartAddress,
LPVOID lpParameter,
DWORD dwCreationFlags,
LPDWORD lpThreadId);
参数说明:
lpThreadAttributes:指向SECURITY_ATTRIBUTES型态的结构的指针。在Windows 98中忽略该参数。在Windows NT中,它被设为NULL,表示使用缺省值。
dwStackSize,线程堆栈大小,一般=0,在任何情况下,Windows根据需要动态延长堆栈的大小。
lpStartAddress,指向线程函数的指针,形式:@函数名,函数名称没有限制,但是必须以下列形式声明:
DWORD WINAPI ThreadProc (LPVOID pParam) ,格式不正确将无法调用成功。
lpParameter:向线程函数传递的参数,是一个指向结构的指针,不需传递参数时,为Nil。
dwCreationFlags :线程标志,可取值如下
CREATE_SUSPENDED: 创建一个挂起的线程
0 :创建后立即激活。
lpThreadId:保存新线程的id。
返回值:
函数成功,返回线程句柄;函数失败返回false。
函数说明:
创建一个线程。
大多数windows程序员喜欢使用PROCESS.H头文件中说明的C运程时的库函数_beginthread。
它更简单,对于大多数应用程序很完美,这个线程函数的语法与_beginthread的语法已在上文中列出。
- Win32下的多线程技术
- Win32 API下的多线程编程
- Win32 API下的多线程编程
- Win32 API下的多线程编程
- Win32 API下的多线程编程
- Win32下的入口模糊技术
- win32下的双缓冲绘图技术
- win32下的双缓冲绘图技术
- Win32的多线程技术,对DirectShow有一些用处
- 基于WIN32 API及MFC的多线程技术
- 基于WIN32 API及MFC的多线程技术
- Win32下定时器与多线程
- 求win32下的多线程控制台程序(c实现)
- 继续讨论win32下的多线程编程问题
- 关于win32环境下多线程编程的总结
- 多线程在C、Win32和MFC下的使用方法
- 多线程在C、Win32和MFC下的使用方法
- 多线程在C、Win32和MFC下的使用方法
- 看了"录取通知"后的感想!!1
- 安装电磁阀时的注意事项
- 进程隐藏的若干方法
- 2008QQ皮肤
- WINCE快捷方式详解
- Win32下的多线程技术
- 搭建SEAM环境出现问题解决
- 批量插入excel数据到数据库中的小例子
- 强大的bitmapData.draw()
- 关于vs2008无法切换设计视图问题和office2007找不到office.zh-cn文件夹
- 把数据库里面的数据放到cache里面
- VC将窗口置最前
- CentOS 5.3 中 yum update 时出现python目录依赖出错的解决办法
- 简单而复杂的smarty循环问题