歲月流轉,往昔空明
C++博客
首頁
新隨筆
聯系
聚合
管理
118 Posts :: 3 Stories :: 413 Comments :: 0 Trackbacks
常用鏈接
我的隨筆
我的評論
我參與的隨筆
留言簿
(15)
給我留言
查看公開留言
查看私人留言
隨筆檔案
(118)
2014年1月 (1)
2013年2月 (1)
2013年1月 (1)
2012年3月 (2)
2012年2月 (1)
2011年12月 (1)
2011年11月 (1)
2011年8月 (1)
2011年7月 (1)
2011年6月 (2)
2011年5月 (1)
2011年4月 (2)
2011年3月 (3)
2011年1月 (2)
2010年12月 (1)
2010年9月 (1)
2010年8月 (1)
2010年7月 (1)
2010年6月 (3)
2010年5月 (3)
2010年4月 (2)
2010年3月 (3)
2009年12月 (6)
2009年10月 (1)
2009年3月 (1)
2009年2月 (1)
2009年1月 (1)
2008年12月 (1)
2008年11月 (2)
2008年9月 (1)
2008年7月 (3)
2008年6月 (1)
2008年5月 (3)
2008年3月 (1)
2008年2月 (3)
2007年12月 (2)
2007年11月 (4)
2007年10月 (3)
2007年8月 (5)
2007年7月 (2)
2007年6月 (5)
2007年5月 (5)
2007年4月 (2)
2007年1月 (3)
2006年12月 (7)
2006年11月 (6)
2006年10月 (6)
2006年9月 (2)
2006年5月 (3)
2005年12月 (1)
2005年11月 (2)
文章分類
(3)
Tips,Tricks(1)
程序庫實作
鏈接區
軟件的藍圖(1)
數字魔方
心情故事
眾樂樂(1)
轉貼區
文章檔案
(3)
2006年5月 (1)
2005年12月 (1)
2005年11月 (1)
收藏夾
(1)
圖形學(1)
青青子衿
友情鏈接
Azure的專欄
3D技術挺好的,博客(網站?)有很多值得學習的例子.高人一名.
Flyingis的博客,GIS
GIS的高手,望塵莫及,努力學習中。
VCZH的博客
編譯器小霸王,現在在Microsoft Search Tech Group實習
波波的Blog
離線大牛啊~
六水的主頁
六水的主頁,Inverse Kinematic,Ray Tracing, Photon Mapping皆有涉獵。CTO.
我的心靈是一片湖藍
我在GameRes上的Blog,經營了一段時間了。經常會翻翻以前的帖子,回味一下過去的快樂和悲傷。
最新隨筆
1.?2013總結
2.?SALVIA 0.5.2優化談
3.?開源光柵化渲染器SALVIA的漫長五年(準·干貨)
4.?SASL編譯器Diagnostic信息的管理、格式化與輸出
5.?SALVIA 0.3 發布:Pixel Shader添加了tex2D的支持
6.?開源軟件光柵化渲染器SALVIA 0.2.5發布:為Pixel Shader添加了分支與循環的支持
7.?SALVIA正式支持一站式編譯
8.?LLVM隨筆
9.?LLVM的調用協議與內存對齊
10.?SALVIA Milestone 1.1 Fix 1: 新Sponza Demo
搜索
積分與排名
積分 - 279096
排名 - 93
最新評論
1.?re: 開源光柵化渲染器SALVIA的漫長五年(準·干貨)
評論內容較長,點擊標題查看
--bitzhuwei
2.?re: 研究生,請你拒絕C++的愛(下)
看了幾次學長寫的東西,尤其是這個。
深深覺得學長說的是正確的。如果一年前我能多看看學長的東西,恐怕不會在C++上浪費了如此多的精力和金錢。。。。。
感謝學長美文,以享莘莘工科狗!thx!
--yuen
3.?re: 碩士論文致謝
評論內容較長,點擊標題查看
--往往
4.?re: 十年編程——和本文罪魁禍首陳梓瀚一起悼念逝去的十年
評論內容較長,點擊標題查看
--往往
5.?re: 一個3D骨骼動畫 2D版超精簡Demo,原理和實現幾乎同3D一致
評論內容較長,點擊標題查看
--往往
閱讀排行榜
1.?C++下Windows Forms + MFC + WTL + wxWidgets + Qt + GTK+ 非官方綜合比較(11004)
2.?一個3D骨骼動畫 2D版超精簡Demo,原理和實現幾乎同3D一致(8484)
3.?開源光柵化渲染器SALVIA的漫長五年(準·干貨)(6083)
4.?告別的話(5948)
5.?碩士論文致謝(5304)
評論排行榜
1.?十年編程——和本文罪魁禍首陳梓瀚一起悼念逝去的十年(20)
2.?[轉貼]構造可配置的詞法分析器(已完結)(19)
3.?SALVIA:A Direct 3D 10 Similar Software Renderer 項目新成員招募計劃(15)
4.?告別的話(14)
5.?碩士論文致謝(14)
使用boost.threads的condition構造的讀寫鎖
沒有什么實際意義(boost.threads已經加入了讀寫鎖好像),只是說明一下condition的用法。
鎖由Mutex和Lock構成。
Mutex是由condition實作而成的,Lock和ScopedLock區別不是很大,分讀寫鎖而已。
以下是Mutex的代碼
class
?read_write_mutex
{
????mutex?mtx_;
????
int
?read_cnt_;
????condition?cond_;
public
:
????read_write_mutex():?read_cnt_(
0
)
{}
????
~
read_write_mutex()
{}
????
void
?lock_read()
{
????????mutex::scoped_lock?
lock
(mtx_);
????????
while
(read_cnt_?
<
?
0
)
{
????????????cond_.wait(
lock
);
????????}
????????
++
read_cnt_;
????}
????
????
void
?unlock_read()
{
????????mutex::scoped_lock?
lock
(mtx_);
????????
--
read_cnt_;
????????cond_.notify_all();
????}
????
void
?lock_write()
{
????????mutex::scoped_lock?
lock
(mtx_);
????????
while
(read_cnt_?
!=
?
0
)
{
????????????cond_.wait(
lock
);
????????}
????????read_cnt_?
=
?
-
1
;
????}
????
void
?unlock_write()
{
????????mutex::scoped_lock?
lock
(mtx_);
????????read_cnt_?
=
?
0
;
????????cond_.notify_all();
????}
}
;
以下是鎖的代碼
class
?scoped_rlock
{
????read_write_mutex
&
?cond_;
public
:
????scoped_rlock(read_write_mutex
&
?c):cond_(c)
{cond_.lock_read();}
????
~
scoped_rlock()
{cond_.unlock_read();}
}
;
class
?scoped_wlock
{
????read_write_mutex
&
?cond_;
public
:
????scoped_wlock(read_write_mutex
&
?c):cond_(c)
{cond_.lock_write();}
????
~
scoped_wlock()
{cond_.unlock_write();}
}
;
以下是測試用例:
int
?top?
=
?
0
;
int
?stack[
1000
];
read_write_mutex?rwc;
mutex?io_mutex;
void
?read(
int
?val)
{
????
for
(
int
?i?
=
?
0
;?i?
<
?
20
;?
++
i)
????
{
????????Sleep(
2
);
????????scoped_rlock?rlock(rwc);
????????
int
?s?
=
?top;
????????
{
????????????mutex::scoped_lock?
lock
(io_mutex);
????????????cout?
<<
?
"
read?begin?
"
?
<<
?val?
<<
?endl;
????????}
????????Sleep(
10
);
????????
{
????????????mutex::scoped_lock?
lock
(io_mutex);
????????????cout?
<<
?
"
read?end?
"
?
<<
?val?
<<
?endl;
????????}
????????
if
(s?
!=
?top)
????????
{
????????????cout?
<<
?
"
error!
"
<<
endl;
????????}
????}
}
void
?write(
int
?val)
{
????
for
(
int
?i?
=
?
0
;?i?
<
?
20
;?
++
i)
????
{
????????Sleep(
2
);
????????scoped_wlock?wlock(rwc);
????????
{
????????????mutex::scoped_lock?
lock
(io_mutex);
????????????cout?
<<
?
"
write?begin?
"
?
<<
?val?
<<
?endl;
????????}
????????Sleep(
5
);
????????
{
????????????mutex::scoped_lock?
lock
(io_mutex);
????????????cout?
<<
?
"
write?end?
"
?
<<
?val?
<<
?endl;
????????}
????}
}
int
?_tmain(
int
?argc,?_TCHAR
*
?argv[])
{
????thread_group?rtg;
????
for
(
int
?i?
=
?
0
;?i?
<
?
10
;?
++
i)
????
{
????????rtg.create_thread(boost::bind(
&
read,?i));
????}
????
for
(
int
?i?
=
?
0
;?i?
<
?
2
;?
++
i)
????
{
????????rtg.create_thread(boost::bind(
&
write,?i));
????}
????rtg.join_all();
????system(
"
pause
"
);
????
return
?
0
;
}
別忘了頭文件中:
#include?
<
boost
/
thread.hpp
>
#include?
<
boost
/
bind.hpp
>
#include?
<
windows.h
>
#include?
<
iostream
>
using
?
namespace
?std;
using
?
namespace
?boost;
posted on 2006-10-23 19:38
空明流轉
閱讀(1808)
評論(0)
編輯
收藏
引用
只有注冊用戶
登錄
后才能發表評論。
【推薦】100%開源!大型工業跨平臺軟件C++源碼提供,建模,組態!
網站導航:
博客園
IT新聞
BlogJava
博問
Chat2DB
管理
Powered by:
C++博客
Copyright © 空明流轉
久久久久久久人妻无码中文字幕爆
|
久久乐国产精品亚洲综合
|
日韩一区二区三区视频久久
|
yellow中文字幕久久网
|
久久精品www
|
亚洲伊人久久成综合人影院
|
狠狠综合久久综合88亚洲
|
久久久久久久久无码精品亚洲日韩
|
精品午夜久久福利大片
|
国产69精品久久久久9999
|
亚洲精品国产第一综合99久久
|
亚洲午夜久久久久久噜噜噜
|
国产99久久精品一区二区
|
久久天天躁夜夜躁狠狠躁2022
|
国产成人综合久久精品红
|
久久天天躁狠狠躁夜夜2020
|
天堂久久天堂AV色综合
|
99精品国产免费久久久久久下载
|
久久人人爽人人爽人人片AV不
|
热re99久久精品国99热
|
久久久久99精品成人片
|
国产精品99久久久久久www
|
18岁日韩内射颜射午夜久久成人
|
亚洲综合精品香蕉久久网97
|
久久96国产精品久久久
|
久久夜色精品国产亚洲
|
久久精品无码一区二区三区日韩
|
久久精品无码一区二区三区
|
色狠狠久久AV五月综合
|
久久免费视频1
|
日韩美女18网站久久精品
|
久久香蕉国产线看观看乱码
|
久久99亚洲网美利坚合众国
|
久久人人爽人人爽人人片AV不
|
久久久精品国产免大香伊
|
少妇熟女久久综合网色欲
|
欧美伊人久久大香线蕉综合69
|
久久国产精品一区
|
四虎久久影院
|
久久久www免费人成精品
|
亚洲国产精品18久久久久久
|