sunlea
在語言的海洋里游動,在設計的大地上馳騁,在思想的藍天里翱翔,在技術的太空中探索。
BlogJava
首頁
新隨筆
聯系
聚合
管理
posts - 4, comments - 5, trackbacks - 0
函數臨界鎖(Function Critical Section Lock)
TCriticalSection的代碼
#pragma?once
//
#include?
#include?
<
afxmt.h
>
#include?
<
iostream
>
namespace
?cj
{
class
?TCriticalSection
{
private
:
????CRITICAL_SECTION?FCriticalSection;
public
:
????TCriticalSection(
void
)
????
{
????????InitializeCriticalSection(
&
FCriticalSection);
????}
????
~
TCriticalSection(
void
)
????
{
????????DeleteCriticalSection(
&
FCriticalSection);
????}
????
void
?Enter(
void
)
????
{
????????EnterCriticalSection(
&
FCriticalSection);
????}
????
void
?Leave(
void
)
????
{
????????LeaveCriticalSection(
&
FCriticalSection);
????}
}
;
}
;??
//
namespace?cj
函數鎖的主要類(TLocalCriticalSectionLock)有代碼
#pragma?once
#include?
"
CriticalSection.h
"
#define
?DeclareLocalCriticalSectionLock(?A_CriticalSectionName?)????\
????TCriticalSection?A_CriticalSectionName;????????????????????\
????friend?
class
?TLocalCriticalSectionLock;
#define
?TriggerLocalCriticalSectionLock(?A_CriticalSectionName?)????????\
????TLocalCriticalSectionLock?FunctionCriticalSectionLock(
this
->
A_CriticalSectionName);
namespace
?cj
{
class
?TLocalCriticalSectionLock
{
private
:
????TCriticalSection?
*
FCriticalSection;
public
:
????inline?TLocalCriticalSectionLock(TCriticalSection?
&
ACriticalSection):FCriticalSection(
&
ACriticalSection)
????
{
????????FCriticalSection
->
Enter();
????}
????inline?
~
TLocalCriticalSectionLock(
void
)
????
{
????????FCriticalSection
->
Leave();
????}
}
;
}
;?
//
?namespace?cj
測試程序
//
?CritialLock.cpp?:?定義控制臺應用程序的入口點。
//
//
#include?"stdafx.h"
//
#include?"CriticalSection.h"
#include?
"
LocalCriticalSectionLock.h
"
#include?
<
winbase.h
>
#include?
<
process.h
>
#include?
<
iostream
>
using
?
namespace
?cj;
//
-------------------------------------------------------------------------------------------
const
?
int
?ThreadHandleListSize?
=
?
10
;
//
-------------------------------------------------------------------------------------------
class
?GObject
{
private
:
????DeclareLocalCriticalSectionLock(FFunctionLock)
public
:
????
int
?GetInteger(
void
)
????
{
????????TriggerLocalCriticalSectionLock(FFunctionLock);
????????
//
TLocalCriticalSectionLock?lcsl(this->cs);
????????std::cout
<<
"
Enter************************
"
<<
std::endl;
????????std::cout
<<
"
GetInteger
"
<<
std::endl;
????????std::cout
<<
"
Leave||||||||||||||||||||||||
"
<<
std::endl;
????????
return
?
1
;
????}
}
;
//
-------------------------------------------------------------------------------------------
????GObject?obj;
//
-------------------------------------------------------------------------------------------
void
?_cdecl?ThreadFunction(
void
*
)
{
????
for
?(
int
?i
=
0
;i
<
20
;i
++
)
????
{
????????obj.GetInteger();
????}
????_endthread();
}
//
-------------------------------------------------------------------------------------------
int
?_tmain(
int
?argc,?_TCHAR
*
?argv[])
{
????uintptr_t?ThreadHandleList[ThreadHandleListSize];
????
????
for
(
int
?i
=
0
;i
<
ThreadHandleListSize;i
++
)
????
{
????????ThreadHandleList[i]?
=
?
-
1
;
????}
????
for
(
int
?i
=
0
;i
<
ThreadHandleListSize;i
++
)
????
{
????????ThreadHandleList[i]?
=
?_beginthread(ThreadFunction,
1024
,
0
);
????}
????
????std::cin.
get
();
????
return
?
0
;
}
posted on 2005-07-11 01:33
Sunlea 的空間
閱讀(645)
評論(0)
編輯
收藏
所屬分類:
C/C++
新用戶注冊
刷新評論列表
只有注冊用戶
登錄
后才能發表評論。
網站導航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
Copyright ©2025 Sunlea 的空間 Powered By:
博客園
模板提供:
滬江博客
<
2025年6月
>
日
一
二
三
四
五
六
25
26
27
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
5
常用鏈接
我的隨筆
我的評論
我的參與
最新評論
留言簿
(2)
給我留言
查看公開留言
查看私人留言
隨筆分類
應用技功
日子(3)
隨筆檔案
2005年9月 (1)
2005年5月 (3)
文章分類
Application Tip(1)
C/C++(1)
Delphi(2)
Information Security Technology(2)
Java
Unix(1)
文章檔案
2005年7月 (2)
2005年6月 (2)
2005年5月 (1)
收藏夾
C/C++
Delphi
Java
Other
C#
Sunmast
MVP, C# 所屬領域:Visual Developer - .NET, Visual Developer - Visual C#
C/C++
CppUnit源碼解讀
Victor 的個人網站
七貓的藏經閣
小飛驢網站
Delphi
forum
51Testing
Other
Program
Chiway
Winsock
saulia的博客
window編程
我心飛揚
Software Technology
MVPcn.Net Blogs
MVPcn.Net Blogs
TDD
大象的博客
于淼 CSDN帳號:CMIC 所屬領域:Visual Developer-XML Web Services 個人blog:http://www.donews.net/cmic
搜索
最新評論
1.?re: Linux很好, 但不要忘記BSD!
去去去去去去去去去去
--翁大辦
2.?re: Linux很好, 但不要忘記BSD!
去去去去去去去
--翁大辦
3.?re: Linux很好, 但不要忘記BSD!
螦挖挖出瓦礫額外負擔
--翁大辦
4.?re: Linux很好, 但不要忘記BSD!
gchgckl,
--sdgdfxhn
5.?wocaonima
wreerwetwetretrfg4rteryyey
--nimasila
閱讀排行榜
1.?準備工作(401)
2.?找工作中(239)
3.?ICE(233)
4.?來offer了(225)
評論排行榜
1.?ICE(0)
2.?準備工作(0)
3.?來offer了(0)
4.?找工作中(0)
主站蜘蛛池模板:
乌鲁木齐市
|
龙州县
|
宾川县
|
运城市
|
砀山县
|
仁怀市
|
大庆市
|
安康市
|
江华
|
崇文区
|
夏津县
|
库车县
|
平陆县
|
涿鹿县
|
贵南县
|
积石山
|
察哈
|
易门县
|
屯昌县
|
横峰县
|
绥芬河市
|
甘南县
|
景宁
|
河南省
|
东港市
|
仁布县
|
潜山县
|
禄劝
|
天门市
|
巍山
|
繁昌县
|
平江县
|
苗栗市
|
姜堰市
|
昆明市
|
洛浦县
|
乌恰县
|
邢台市
|
西丰县
|
固安县
|
霸州市
|