!!! 多线程编程+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的API编程而言,这两种线程是没有区别的,它们都只需线程的启动地址即可启动线程来执行任务。
  • 工作者线程

CWinThread* AfxBeginThread(AFX_THREADPROC pfnThreadProc,

                                           LPVOID pParam,

                                           nPriority=THREAD_PRIORITY_NORMAL,

                                           UINT nStackSize=0,

                                           DWORD dwCreateFlags=0,

                                           LPSECURITY_ATTRIBUTES lpSecurityAttrs=NULL);

PfnThreadProc:指向工作者线程的执行函数的指针,线程函数原型必须声明如下

  • 用户界面线程

CWinThread* AfxBeginThread(CRuntimeClass* pThreadClass,

                                           int nPriority=THREAD_PRIORITY_NORMAL, UINT nStackSize=0, DWORD dwCreateFlags=0, LPSECURITY_ATTRIBUTES lpSecurityAttrs=NULL);

pThreadClass 是指向 CWinThread 的一个导出类的运行时类对象的指针,该导出类定义了被创建的用户界面线程的启动、退出等;其它参数的意义同形式1。

 

!!!MFC下结束AfxBeginThread开启的线程
         http://c.chinaitlab.com/vc/808113.html  
!!!AfxBeginThread和AfxEndThread - 莫回头,回头也白少年头! - CSDN博客
         http://blog.csdn.net/kut00/archive/2009/05/22/4209680.aspx 

  • 终止线程有三种途径,

 1、线程可以在自身内部调用AfxEndThread()来终止自身的运行;

      ( AfxBeginThread 和 AfxEndThread 怎么用 http://topic.csdn.net/u/20091012/16/9471478f-251d-42b5-aa80-5b2171ab8a21.html)

2、可以在线程的外部调用BOOL TerminateThread( HANDLE hThread, DWORD dwExitCode )来强行终止一个线程的运行,然后调用CloseHandle()函数释放线程所占用的堆栈;

3、是改变全局变量,使线程的执行函数返回,则该线程终止。

WaitForSingleObject和WaitForMultipleObjects - 温海东的日志 - 网易博客

http://wenhaidongke.blog.163.com/blog/static/128070090201032292240943/

WaitForMultipleObjects多线程控制

      http://www.docin.com/p-57401851.html

  http://topic.csdn.net/u/20080229/15/75ac4521-c38b-4530-b94a-ebd48171425f.html

      WaitForMultipleObjects 多个线程同时触发的问题 :多个内核对象被触发时,WaitForMultipleObjects选择其中序号最小的返回。

                                                                        这儿又会产生一个问题,如果序号最小的那个对象频繁被触发,那么序号比它大的内核对象将的不到被出理的机会,

                                                                        可以采用双WaitForMultipleObjects检测机制来实现。

!!!多线程编程之三——线程间通讯_chimmy_新浪博客.htm

    http://blog.sina.com.cn/s/blog_52996aea0100bpj5.html

!!!多线程编程之四——线程的同步_chimmy_新浪博客.htm

    http://blog.sina.com.cn/s/blog_52996aea0100bpjd.html

原文地址:https://www.cnblogs.com/carl2380/p/2037469.html