?? 1315523201.txt
字號:
化境編程界-
MFC中多線程的應用(1)
化境編程界首頁| 化境軟件庫 | 化境教程庫 | 其它資源 | 化境討論區
| 化境留言板
showTop();
歡迎訪問《化境編程界》| * Email:5xsoft@21cn.com | < 留言板
化境編程界 -> 技術文章 -> C/C++/VC
MFC中多線程的應用(1)
[ 作者: jazzrabbit
添加時間: 2001-5-13 15:57:10
]
來源:天極論壇
試著用自已的話來表述線程的概念,還有很短時間里編的一個小示例程序(不知恰當不?,也不知能說得清不..),見笑了.
線程其實和標準的windows主程序(WinMain)沒啥兩樣...主程序其實是一個特殊的線程,稱為主線程而已,其實你完全可以把線程想象成和winmain一起**同時運行**,但是** 可以相互訪問(即在一個地址空間) **的一些小的WinMain程序.它和主線程一樣,里面可以創建窗口,獲取消息,等等..
由于線程們在一個地址空間且同時運行,所以會造成一些麻煩。因為我們編程都要用別人的函數庫,而他們的函數庫里面往往會有很多靜態或全局的狀態或中間變量,有著很復雜的相互依賴關系,如果執行某個功能不串行化(所謂串行化,也就是只能等一個功能調用返回后,另一個線程才能調用,不可以同時調用),就會造成大亂.這對線程來說,有術語稱同步,windows為我們提供了很多同步的方法,MFC也提供了一些同步核心對象的類封裝.對于某個功能調用庫來說,叫線程安全.比如MFC的類庫并不是線程安全的.
現在我舉個剛剛自編的例子來簡單說明這些概念。下面的一個對話框應用是多線程的.演示兩個小動畫:
(1)第一個動畫由主線程的Timer來驅動,第二個動畫由主線所創建的工作線程來驅動.分別顯示在不同的位置.之所以我要加入Timer,也是為了形成線程驅動和timer驅動的對照,這是動畫的兩種驅動方式(還有在idle中驅動的)。
(2)這兩個動畫永遠是不同的.也就是比如:一個是變哭,一個就會變笑,等那個變笑了,這個就變哭.動畫圖片來自于OICQ中的Face目錄下,一般同樣的頭像會oicq會帶三個圖片(*-1.bmp,*-2.bmp,*-3.bmp),*-2.bmp是變灰的圖片,我就取了1和3的圖片來作動畫.
這個程序的幾個關鍵要注意的:
(1)主線程用PostThreadMessage和工作線程通信.工作線程用PeekMessage來取回消息。為了簡單起見,我只用了一個WM_QUIT的消息來指示工作線程退出.
(2)主線程和工作線程同時調用了一個DisplayFace函數來進行動畫顯示.為了讓兩個動畫一哭一笑做到不同,采用了CCriticalSection來進行同步.
示例如下:
(1)先用appwizards生成一個MFC的Dialog應用模板,假定對話框類為CTest01Dlg。
(2)再添入兩個oicq的bmp文件到資源中去
(3)添加一個按鈕(button)到對話框上.用作啟動、停止動畫的button
(4)用ClassWizard為button/onclick及dlg/ontimer生成事件響應函數,
(5)用Resource Symbol加入一個標識定義IDC_TIMER1
(6)在ClassView中為CTest01Dlg加入以下成員變量和成員函數
CriticalSection ccs;
CBitmap bm[2];
CWinThread* pMyThread;
static UINT MyThreadProc( LPVOID pParam);
void DisplayFace(CPoint r);
實現文件中加入相應代碼(見下面)
(7)stdafx.h中加入#include
源代碼如下,凡是我新加的代碼周圍都有注釋包圍,其它是ClassWizards自動寫的:
// stdafx.h : include file for standard system include files,
// or project specific include files that are used frequently, but
// are changed infrequently
file://
#if !defined(AFX_STDAFX_H__5B92DAA8_FE27_4702_8037_A2538343E69D__INCLUDED_)
#define AFX_STDAFX_H__5B92DAA8_FE27_4702_8037_A2538343E69D__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#define VC_EXTRALEAN // Exclude rarely-used stuff from Windows headers
#include // MFC core and standard components
#include // MFC extensions
#include // MFC support for Internet Explorer 4 Common Controls
file://加入頭引用主要是CCriticalSection對象的定義.
#include
file://加入結束
#ifndef _AFX_NO_AFXCMN_SUPPORT
#include // MFC support for Windows Common Controls
#endif // _AFX_NO_AFXCMN_SUPPORT
file://{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_STDAFX_H__5B92DAA8_FE27_4702_8037_A2538343E69D__INCLUDED_)
// test01Dlg.h : header file
file://
#if !defined(AFX_TEST01DLG_H__F3780E23_CCFC_468C_A262_50FFF1D991BC__INCLUDED_)
#define AFX_TEST01DLG_H__F3780E23_CCFC_468C_A262_50FFF1D991BC__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
/////////////////////////////////////////////////////////////////////////////
// CTest01Dlg dialog
class CTest01Dlg : public CDialog
{
// Construction
public:
file://加入
CBitmap bm[2];
CCriticalSection ccs;
CWinThread* pMyThread;
static UINT MyThreadProc( LPVOID pParam);
void DisplayFace(CPoint r);
CTest01Dlg(CWnd* pParent = NULL); // standard constructor
file://加入結束
// Dialog Data
file://{{AFX_DATA(CTest01Dlg)
enum { IDD = IDD_TEST01_DIALOG };
// NOTE: the ClassWizard will add data members here
file://}}AFX_DATA
// ClassWizard generated virtual function overrides
file://{{AFX_VIRTUAL(CTest01Dlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
file://}}AFX_VIRTUAL
// Implementation
protected:
HICON m_hIcon;
// Generated message map functions
file://{{AFX_MSG(CTest01Dlg)
virtual BOOL OnInitDialog();
afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
afx_msg void OnPaint();
下一頁 8
相關內容:
- Java 程序中的多線程
- 討論: windows程序設計方式爭論
- ATL和MFC來,應該使用哪個?
- 初始化類成員和在你的MFC應用中加入位置欄
- 利用MFC的CFileDialog生成Windows2000文件對話框
showBottom();
申明: 本站
所有內容均是從網上收集,若有侵范你版權的請指出,本站馬上刪除。
© Copyright By 稻香老農 2000.3 - Now | 站務聯系: 5xsoft@21cn.com | OICQ:593737 (只用于站務聯系,不做它用)
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产女人aaa级久久久级|
精品国产凹凸成av人导航|
男女男精品视频|
亚洲国产成人午夜在线一区|
欧美性猛交xxxx黑人交|
国产在线国偷精品免费看|
一区二区在线看|
国产欧美精品日韩区二区麻豆天美|
欧美三电影在线|
成人av电影观看|
麻豆国产精品官网|
亚洲一区在线电影|
欧美国产在线观看|
欧美成人伊人久久综合网|
在线免费观看不卡av|
av电影在线观看完整版一区二区|
九九在线精品视频|
日韩中文字幕一区二区三区|
亚洲精品国产高清久久伦理二区|
中文字幕在线一区|
久久影院午夜片一区|
在线成人午夜影院|
欧美中文一区二区三区|
色综合欧美在线视频区|
99久久久久久|
voyeur盗摄精品|
成人精品免费网站|
国产成人精品1024|
国产原创一区二区三区|
免费在线观看一区二区三区|
亚洲bt欧美bt精品777|
一区二区免费看|
一区二区三区高清在线|
自拍偷拍国产亚洲|
国产精品久久久久久久久免费樱桃|
26uuu亚洲|
久久久久久久久伊人|
久久久综合激的五月天|
久久久午夜电影|
国产亚洲精品aa|
国产午夜亚洲精品羞羞网站|
国产亚洲精品福利|
欧美国产精品专区|
国产精品私人影院|
国产精品成人免费|
亚洲青青青在线视频|
亚洲黄网站在线观看|
亚洲伊人色欲综合网|
亚洲电影中文字幕在线观看|
日本亚洲视频在线|
九九视频精品免费|
国产999精品久久久久久绿帽|
成人免费毛片片v|
99久久精品国产网站|
色激情天天射综合网|
欧美亚洲一区二区在线观看|
在线播放亚洲一区|
精品理论电影在线|
日本一区二区免费在线观看视频|
中文字幕一区二区三区不卡在线|
亚洲日本一区二区|
午夜视频一区在线观看|
精品一区二区三区影院在线午夜|
国产成人av自拍|
99re8在线精品视频免费播放|
欧美自拍偷拍午夜视频|
欧美一区二区在线视频|
精品久久99ma|
亚洲欧美一区二区视频|
亚洲成人激情自拍|
国产综合色在线|
色域天天综合网|
日韩午夜激情视频|
国产精品日韩成人|
亚洲一区二区偷拍精品|
久久电影网站中文字幕|
播五月开心婷婷综合|
欧美视频一区二区三区四区|
精品国产乱码久久久久久夜甘婷婷
|
日本大香伊一区二区三区|
欧美日韩国产一区二区三区地区|
久久网站最新地址|
国产精品短视频|
人人狠狠综合久久亚洲|
成人亚洲一区二区一|
欧美日韩免费观看一区二区三区|
久久麻豆一区二区|
午夜私人影院久久久久|
国产精品中文有码|
欧美亚洲另类激情小说|
久久精品一区四区|
无码av中文一区二区三区桃花岛|
国产成人精品三级麻豆|
欧美电影在哪看比较好|
中文字幕va一区二区三区|
日韩综合小视频|
91视频com|
国产午夜一区二区三区|
日韩黄色免费电影|
91免费国产在线观看|
久久久噜噜噜久久人人看|
五月婷婷色综合|
91丨九色porny丨蝌蚪|
精品国产成人系列|
午夜精品久久久久久|
一本色道久久综合狠狠躁的推荐
|
欧美视频完全免费看|
久久精品夜夜夜夜久久|
日日摸夜夜添夜夜添精品视频|
波多野结衣中文字幕一区
|
波多野结衣91|
精品国产成人在线影院|
视频一区中文字幕|
色婷婷久久一区二区三区麻豆|
国产无遮挡一区二区三区毛片日本|
五月天欧美精品|
欧洲视频一区二区|
亚洲图片你懂的|
成人免费va视频|
久久毛片高清国产|
久久99精品视频|
欧美一区二区三区在线视频|
亚洲一区在线播放|
91网址在线看|
自拍偷拍亚洲欧美日韩|
成人的网站免费观看|
国产日韩欧美制服另类|
国产在线播放一区|
久久久久国产精品麻豆|
激情丁香综合五月|
欧美成人福利视频|
美日韩黄色大片|
亚洲精品一区二区三区精华液|
男女男精品视频网|
日韩美一区二区三区|
久久成人麻豆午夜电影|
欧美大片一区二区|
精品一区二区日韩|
2022国产精品视频|
国产一区二区三区精品欧美日韩一区二区三区
|
精品福利二区三区|
美女www一区二区|
国产ts人妖一区二区|
久久久亚洲精品一区二区三区
|
自拍av一区二区三区|
在线视频欧美区|
国产麻豆欧美日韩一区|
亚洲女爱视频在线|
日韩精品中午字幕|
欧美午夜一区二区三区免费大片|
国产一区二区精品久久91|
欧美性猛交xxxx黑人交|
亚洲欧美一区二区在线观看|
97se亚洲国产综合自在线不卡|
亚洲男帅同性gay1069|
色狠狠综合天天综合综合|
亚洲成人午夜影院|
日韩午夜电影在线观看|
国产一区二区看久久|
中文字幕一区二区三区精华液
|
日韩欧美另类在线|
黄色日韩三级电影|
国产精品水嫩水嫩|
在线观看视频一区|
日本aⅴ免费视频一区二区三区|
久久中文字幕电影|
av在线播放不卡|
亚洲成a人片综合在线|
日韩欧美视频在线|
成人午夜免费视频|
亚洲成av人片在线观看|
www国产亚洲精品久久麻豆|
99九九99九九九视频精品|
香蕉加勒比综合久久|
精品久久一区二区三区|
成人久久久精品乱码一区二区三区|
亚洲一区在线观看免费观看电影高清|
欧美疯狂性受xxxxx喷水图片|
久久爱www久久做|
亚洲黄色尤物视频|
欧美第一区第二区|
91丨九色丨尤物|
九色|91porny|
亚洲国产精品欧美一二99|
精品福利一二区|
欧美日韩国产色站一区二区三区|
国产精品影视在线|
亚洲自拍另类综合|
久久久综合精品|
在线观看日韩毛片|
久久国产精品99久久久久久老狼|
亚洲人成网站色在线观看|
日韩欧美国产电影|
91视频免费看|
国产资源精品在线观看|
亚洲一区二区三区国产|
中文字幕电影一区|
日韩一级高清毛片|
欧美自拍偷拍午夜视频|
大白屁股一区二区视频|