随笔分类 - MFC04:多线程
AfxBeginThread和AfxEndThread+内存泄露
摘要:refhttp://blog.csdn.net/kut00/article/details/4209680启动线程:CWinThread* AfxBeginThread(线程函数,this );线程的退出:在刚刚使用的时候,退出线程的方法有问题,导致退出的时候异常。下面说线程退出的方法:1.线程函数返回:线程都在死循环中,当满足一定条件时,return,也会将线程结束。2.AfxEndThread:这个函数只能用在线程函数中,当满足一定条件是,调用。举一个例子:可以创建一个信号量,用WaitForSingleObject函数来检测该信号量的状态。成员变量m_hThreadEvent;m_hTh
阅读全文
初学线程,TlsSetValue
摘要:http://topic.csdn.net/u/20101029/17/5db5dd3a-dc66-4448-b050-01d64dcda23a.htmlTLS是线程本地存储的意思,同一个索引不同的线程可以存不同的值进去。::TlsSetValue(g_tlsUsedTime, (LPVOID)dwStart) ;g_tlsUsedTime只是一个TLS索引,它在main函数里申请的;虽然都是g_tlsUsedTime,在不同线程里调用TlsSetValue是把值存到不同的地方去的,TlsGetValue也是从不同地方取值。这就是线程本地存储的意义,可参见用托管代码实现线程本地存储的三种方法_
阅读全文
VC命名管道通信的实现
摘要:http://www.yesky.com/324/1739324.shtml无论是SQL Server的用户,还是PB的用户,作为C/S结构开发环境,他们在网络通信的实现上,都有一种共同的方法——命名管道。由于当前操作系统的不惟一性,各个系统都有其独自的通信协议,导致了不同系统间通信的困难。尽管TCP/IP协议目前已发展成为Internet的标准,但仍不能保证C/S应用程序的顺利进行。命名管道作为一种通信方法,有其独特的优越性,这主要表现在它不完全依赖于某一种协议,而是适用于任何协议——只要能够实现通信。 命名管道具有很好的使用灵活性,表现在: 1) 既可用于本地,又可用于网络。 2) 可以通
阅读全文
线程中直接使用死循环,不会导致cpu将达到 100%
摘要:之前,我以为,线程中不能直接使用死循环,必须使用 WaitForMultipleObjects 否则 cpu将达到 100%demo 测试h后,发现并非一个线程函数有死循环就会导致(一般只会达到 50%),而是在死循环中没有接受线程终止消息,所以无法停止播放后线程函数并未推出,同时又添加了新的控件,新控件有开了新线程导致
阅读全文
!!! 多线程编程+MFC中的多线程开发+线程间通讯+线程的同步
摘要:F:\U盘备份\u盘32\线程+定时器\!!!多线程编程之一——问题提出_chimmy_新浪博客.htm http://blog.sina.com.cn/s/blog_52996aea0100bpiw.html!!!多线程编程之二——MFC中的多线程开发_chimmy_新浪博客.htm http://blog.sina.com.cn/s/blog_52996aea0100bpj0.html工作者线程没有消息机制,通常用来执行后台计算和维护任务,如冗长的计算过程,打印机的后台打印等;用户界面线程一般用于处理独立于其他线程执行之外的用户输入,响应用户及系统所产生的事件和消息等。但对于Win32的A
阅读全文
!!![摘]CreateThread、_beginthreadex和AfxBeginThread_My Golden Days_百度空间
摘要:我的阅读总结:
1、Create/EndThread是Win32方法开始/结束一个线程
_beginthreadx/_endthreadex是C RunTime方式开始/结束一个线程
AfxBeginThread在MFC中开始/结束一个线程
2、CreateThread 线程函数定义为:DWORD WINAPI _yourThreadFun(LPVOID pParameter)。
AfxBeginThread 线程函数定义为:UINT _yourThreadFun(LPVOID pParam)
3、CreateThread
但它没有考虑:(1)C Runtime中需要对多线程进行纪录和初始化,
直接在CreateThread API创建的线程中使用sprintf,malloc,strcat等涉及CRT存储堆操作的CRT库函数是很危险的,容易造成线程的意外中止。
如果你正在编写C/C++代码,决不应该调用CreateThread。相反,应该使用Visual C++运行期库函数_beginthreadex
在使用_begi
阅读全文
多线程定时器
摘要:以上参考分别介绍了线程+多媒体定时器方法,但是当单独开线程的时候都是采用Sleep(1000)进行定时,这样必定有累积误差
采用开辟独立线程的方法+多媒体定时器, !!!解决了上述参考资料中定时器累积误差问题
阅读全文
vc 控制台(console)下实现线程和定时器的例程
摘要:源码在 D:\MyProject\利亚德\110-Frame02\s设计资料\vc 控制台(console)下实现线程和定时器的例程,使用CreateThread//************************************************************************************//本程序使用了两种实现定时的方法,都是基于API的,而不是MFC//// 1. 是使用线程定时休眠的方法,启动线程ThreadProc,在线程中输出,然后Sleep 1000ms// // 2. 使用定时器方法,设置一个1000ms的定时器(SetTimer),然
阅读全文
vc中定时器并非多线程
摘要:http://blog.sina.com.cn/s/blog_52996aea0100bpnn.htmlVC++中timer很容易给人感觉是多线程的。其实不然,他是通过消息触发事件的。。通过SetTimer函数设定定时器后,在规定时间内向消息队列中加入wm_timer消息来触发事件。并且只有该消息返回后才处理下个消息。 可以通过程序来验证。BOOL bThreadEnd = TRUE;UINT ThreadPro(LPVOID pParam);void CTestThreadDlg::OnTimer(UINT nIDEvent){// TODO: Add your message handle
阅读全文
PostThreadMessage 使用注意问题
摘要:使用PostThreadMessage 与线程进行大数据量的通讯 http://blog.csdn.net/shiff/archive/2007/12/05/1918963.aspx使用PostThreadMessage在Win32线程间传递消息 http://wangxiaojs.javaeye.com/blog/294591 http://topic.csdn.net/u/20080421/10/2bddd696-3262-438f-be9c-6ee830afbb73.html?299673429PostThreadMessage可以用于线程之间的异步通讯,因为它不用等待调用者返回
阅读全文