¡¡

Ïà¹Ø·ÖÀà VCÈëÃÅ ->VC ->VCShare

Áù ¶àÏß³Ì

¹Ø¼ü×Ö VC ¶àÏß³Ì


Ö÷ÒªÄÚÈÝ£º

1£¬ ¹¤×÷ÕßÏß³Ì

2£¬ Óû§½çÃæÏß³Ì

3£¬ ͬ²½

Ï̱߳»·ÖΪ¹¤×÷ÕßÏ̺߳ÍÓû§Óû§½çÃæÏ̡߳£Óû§½çÃæµÄÏ̵߳ÄÌØµãÊÇÓµÓе¥¶ÀµÄÏûÏ¢¶ÓÁУ¬¿ÉÒÔ¾ßÓÐ×Ô¼ºµÄ´°¿Ú½çÃæ£¬Äܹ»¶ÔÓû§ÊäÈëºÍʼþ×÷³ö·´Ó¦¡£



¿ÉÒÔÓÃÒÔÏ·½·¨½¨Á¢Ò»¸ö¹¤×÷ÕßÏ̡߳£

UINT MyThreadProc(LPVOID pParam)

{

¡­

}

AfxBeginThread(MyThread,..);

ËüÓÐÁù¸ö²ÎÊý£¬µÚÒ»¸öΪ¿ØÖƺ¯Êý£¬µÚ¶þ¸öΪÆô¶¯Ïß³Ìʱ´«¸ø¿ØÖƺ¯ÊýµÄÈë¿Ú²ÎÊý£¬µ±Ç°Ï̵߳ÄÓÅÏȼ¶£¬µ±Ç°Ï̵߳ÄÕ»µÄ´óС£¬µ±Ç°Ï̵߳Ĵ´½¨×´Ì¬£¬°²È«ÊôÐÔ£¬ºóËĸöÓÐĬÈÏÖµ¡£



Óû§½çÃæỊ̈߳º

Ê×ÏÈÀûÓÃÓ¦ÓóÌÐòÏòµ¼½¨Á¢µ¥Îĵµ³ÌÐòThread,ÔÙ½¨Á¢Thread1 : public CWinThread,

Frame1 : public CFrameWnd,¿ÉÒÔÓÃCtrl+w½¨Á¢ÕâÁ½¸öÐÂÀà¡£

ÔÚCThreadAppÖмÓÒ»¸öÖ¸ÕëThread1* pThread1£¬ÔÚBOOL CThreadApp::InitInstance()

ÖнøÐгõʼ»¯£º

pThread1 = new Thread1();

pThread1->CreateThread();

½«Thread1µÄ¹¹Ô캯Êý¸Ä³É¹«ÓС£

ÔÚThread1ÖмÓÒ»¸öÖ¸ÕëFrame1* m_pWnd£¬È»ºó³õʼ»¯¡£

BOOL Thread1::InitInstance()

{

m_pWnd = new Frame1();

return TRUE;

}

°ÑFrame1µÄ¹¹Ô캯Êý¸Ä³É¹«ÓУ¬ÔÚThread.hÖаüº¬#include "Frame1.h"¡£

ÔÚ×ÊÔ´±à¼­Æ÷Öб༭һ¸ö²Ëµ¥IDR_MENU£¬ËüÓÐÒ»¸ö²Ëµ¥ÏîID_BEGIN¡£

Frame1::Frame1()

{

Create(NULL,"Demo");

ShowWindow(SW_SHOW);

UpdateWindow();



CMenu menu;//¿ÉÒÔÓþֲ¿±äÁ¿£¬ÒòΪÒÔºó²»»áÓõ½ËüÁË,¼Ó²Ëµ¥¡£

menu.LoadMenu(IDR_MENU);

SetMenu(&menu);

}

ͬ²½

¶àÏ̵߳ÄÒ»¸öÄѵãÊǸ÷Ï̼߳äµÄЭµ÷¡£Í¬ÑùµÄ·½·¨ÔÚCThreadAppÖÐÔÙ¿ªÒ»¸öÏ̡߳£

BOOL CThreadApp::InitInstance()

{

¡£¡£¡£¡£¡£¡£

pThread1 = new Thread1();

pThread1->CreateThread();

pThread2 = new Thread1();

pThread2->CreateThread();

¡£¡£¡£¡£¡£¡£

}

ΪIDR_MENUÖеIJ˵¥ÔÚFrame1ÖÐÉèÁ¢ÏìÓ¦º¯Êý£¬·½·¨Ò²ÊÇCtrl+w´ò¿ªÀàÏòµ¼¡£²¢ÔÚFrame1Öж¨ÒåÒ»¸öÈ«¾ÖÕûÐαäÁ¿n,³õʼֵΪ0.

HANDLE handle=CreateSemaphore(NULL,0,1,"he");

WaitForSingleObject(handle,10000);



CString str;

n++;

str.Format("µÚ%d´Î¹¤×÷",n);

MessageBox(str);

ReleaseSemaphore(handle,1,NULL);

µ±Äãµã»÷Frame1µÄ²Ëµ¥Ê±£¬»áµ¯³öÒ»¸ö¶Ô»°¿ò£¬ÔÝʱ²»Òªµã È·¶¨£¬µã»÷ÁíÒ»¸öÏ̵߳IJ˵¥£¬Ôݲ»»áµ¯³ö¶Ô»°¿ò£¬È·¶¨¸Õ²ÅµÄ¶Ô»°¿ò£¬ÁíÒ»¸öÏ̵߳ĶԻ°¿òÒ²µ¯³öÀ´ÁË¡£

Õâ¸öͬ²½µÄ·½·¨³ÆÎªÐźÅÁ¿¡£ËüÔÊÐíÓÐÏÞµÄÏ̴߳æÈ¡Ä³¸ö¹²ÏíµÄϵͳ×ÊÔ´£¬²ÉÓüÆÊýÆ÷À´ÊµÏÖÐźÅÁ¿¡£

HANDLE CreateSemaphore(LPSECURITY_ATTRIBUTES lpa,LONG cSemInitial,LONG cSemMax,LPTSR lpszSemName);

µÚÒ»¸ö²ÎÊýÀ´Ö¸Ã÷Ëù´´½¨µÄ¶ÔÏóÊÇ·ñ¿ÉÒÔ±»Æä×Ó½ø³Ì¼Ì³Ð¡£Èç¹ûÄãÏ£ÍûÔÚËùÓеÄ×Ó½ø³ÌÖ®¼ä¹²ÏíÕâ¸öÐźÅÁ¿£¬¿ÉÒÔ°ÑËüµÄ³ÉÔ±bInheritHandleÉèΪtrue,Ò²¿ÉÒÔÖ±½ÓÉèΪNULLÀ´Ê¹ÓÃĬÈϵݲȫÉèÖõڶþ¸ö²ÎÊýÊÇ»¹¿ÉÒÔÈü¸¸öÏß³ÌʹÓ㬵ÚÈý¸ö²ÎÊýÊÇ×î¶à¿ÉÒÔÈü¸¸öÏß³ÌʹÓá£

×îºó²ÎÊýÊÇÐźÅÁ¿µÄÃû×Ö£¬ÔÚÆäËüµÄ½ø³ÌÖе÷ÓÃCreateSemapphore()»òOpenSemaphore()ʱʹÓÃÕâ¸ö×Ö·û´®×÷Ϊ²ÎÊýÖ®Ò»¾Í¿ÉÒԵõ½ÐźÅÁ¿µÄ¾ä±ú¡£

ReleaseSemaphore(HANDLE hSemaphore, LONG cRelease,LPLONG plPrev)

µÚ¶þ¸ö±íʾһ´ÎÊͷż¸£¬




ÉÏһƪ:Îå ¶Ô»°¿ò
ÏÂһƪ:Æß ¹¤¾ßÀ¸

¡¡

ƒ