VC++线程总结

本文介绍了VC++中关于线程的操作,包括使用CreateThread创建线程,SuspendThread和ResumeThread进行线程暂停与恢复,ExitThread终结线程,TerminateThread强制终止线程,PostThreadMessage发送线程消息,以及线程同步对象如Critical_section、Event、Mutex和Semaphores的使用。通过WaitForSingleObject和WaitForMutipleObjects实现线程同步。


1. 创建线程

HANDLE CreateThread(。。。)

2.暂停线程 

DWORD SuspendThread(HANDLE hThread);

3. 重启线程

DWORD ResumeThread(HANDLE hThread);

4. VOID ExitThread(DWORD dwExitCode);
该函数用于线程终结自身的执行,主要在线程的执行函数中被调用。其中参数dwExitCode用来设置线程的退出码。
5. BOOL TerminateThread(HANDLE hThread,DWORD dwExitCode);
一般情况下,线程运行结束之后,线程函数正常返回,但是应用程序可以调用TerminateThread强行终止某一线程的执行。
6. BOOL PostThreadMessage();

该函数将一条消息放入到定线程的消息队列中,并且不等到消息被该线程处理时便返回。

7.线程同步对象的使用;
同步对象有:Critical_section(临界区),Event(事件),Mutex(互斥对象),Semaphores(信号量)。都有相应的 API创建函数和MFC类,同步对象可以处于两种状态:信号状态(signal state)或非信号状态,当一个线程与某个对象相关联时,若该对象处于非信号状态,则要等到其变成信号状态线程才能继续执行。
WIN32 API提供了等待命令WaitForSingleObject和WaitForMutipleObjects:
如果在指定时间内对象达到 信号状态则返回WAIT_OBJECT_0,超时返回WAIT_TIMEOUT,出错返回 WAIT_FAILED。对于互斥量、信号量和自动重置(auto-reset)事件对象,等待成功时将它们改成非信号状态(信号量计数器减1),以实现对象的互斥访问。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值