多线程编程
danelumax2
这个作者很懒,什么都没留下…
展开
-
用消息的方式实现线程通信
1.定义一个消息(消息标志) #define WM_USERMESSAGE1 WM_USER + 0x1002.由于按了按钮,执行了响应函数 在函数中,用PostThreadMessage,把我这个函数中的一些参数(p),借由消息,发给线程(线程ID) void CXc009Dlg::OnButton1() {char *p = new char[原创 2013-01-28 17:34:11 · 337 阅读 · 0 评论 -
pParam使用
pParam是消息传递参数1.CreatThread中有个参数,是要传递到线程中的。2.线程函数只有一个形参,pParam。线程响应后,pParam接收了外部传来的参数3.由于pParam是LPVOID型,即void*,所以不能直接用,必须赋给一个新定义的值。4.赋值时要对pParam进行强行转换原创 2013-01-28 17:32:42 · 2071 阅读 · 0 评论 -
MFC中的CreateThread
用CreateThread建立线程1.首先要先声明一个线程句柄2.声明线程ID3.在OnInitDialog中,用CreateThread创建线程4.用CreateThread穿件的线程,优点在于他可以挂起原创 2013-01-28 17:34:50 · 2026 阅读 · 0 评论 -
OpenEvent
函数功能打开一个已经存在的命名事件对象函数原型HANDLE OpenEvent(DWORD dwDesiredAccess,BOOL bInheritHandle,LPCTSTR lpName);参数说明dwDesiredAccess 【in】指定对事件对象的请求访问权限,如果安全描述符指定的对象不允许要求通过对调用该函数的转载 2013-01-30 18:43:34 · 3722 阅读 · 0 评论 -
CreateEvent的用法
HANDLE CreateEvent( LPSECURITY_ATTRIBUTES lpEventAttributes, // SD BOOL bManualReset, // reset typ转载 2013-01-30 18:59:51 · 335 阅读 · 0 评论 -
Mutex
Mutex 作为系统核心对象是可以跨进程的(临界区就不行), 我们可以利用互斥对象禁止程序重复启动.工作思路:先用 OpenMutex 尝试打开一个自定义名称的 Mutex 对象, 如果打开失败说明之前没有这个对象存在;如果之前没有这个对象, 马上用 CreateMutex 建立一个, 此时的程序应该是第一次启动;再重复启动时, 那个 OpenMutex 就有结果了, 然后强制原创 2013-03-11 15:52:20 · 516 阅读 · 0 评论 -
MFC下多线程UpdateData的使用方法
在randomDlg.h //定义用户消息,不可与系统消息冲突,所以就这样定义 //WM+USER表示用户消息,加100还是加其他值并没多大区别的 #define WM_MYUPDATEDATA WM_USER+100 在线程内//向主程序框架MainFrm发送消息 //SendMessage第二第三参数可以为其他更多的类型,不局限于此原创 2013-05-07 11:02:33 · 724 阅读 · 0 评论 -
C++使用临界区(互斥体)来控制多线程访问同一个变量(经典例子)
#include #include using namespace std;int index = 0;// 临界区结构对象CRITICAL_SECTION g_cs;HANDLE hMutex = NULL;void changeMe(){ cout }void changeMe2(){ cout }void原创 2013-12-01 23:34:53 · 2459 阅读 · 1 评论 -
Linux C++ 线程池
在平时项目中我们经常需要多线程编程,提高系统的CPU利用率,但是如果需要用多线程处理类似轻量级、频率高的任务,因为创建一个线程或者删除一个线程是需要开销的;如果线程数量过大的话,cpu就会浪费很大的精力做线程切换,和创建、删除线程,甚至在系统开销中占很大的一部分,反而会大大降低系统的性能,碰到这种问题怎么办? 线程池流程图 来源:朱翔[点击放大]自然而然,我们想转载 2015-09-30 22:13:27 · 834 阅读 · 0 评论