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 的空间
阅读(639)
评论(0)
编辑
收藏
所属分类:
C/C++
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
Chat2DB
C++博客
博问
管理
<
2024年12月
>
日
一
二
三
四
五
六
24
25
26
27
28
29
30
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
31
1
2
3
4
常用链接
我的随笔
我的评论
我的参与
最新评论
留言簿
(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. 准备工作(394)
2. 找工作中(233)
3. ICE(227)
4. 来offer了(224)
评论排行榜
1. ICE(0)
2. 准备工作(0)
3. 来offer了(0)
4. 找工作中(0)