[cpp]view plain
copy
print?
namespace
void iorun1()
} void iorun2()
} void strand_print1()
void strand_print2()
void strand_print3()
void strand_print4()
// 將上面的m_strand換成m_service後,
void service_print1()
void service_print2()
void service_print3()
void service_print4()
} void test_strand()
void test_service()
test_strand的執行結果:
[cpp]view plain
copy
print?
2013-01-05 17:25:34 626 [8228] debug - id: 4
2013-01-05 17:25:34 631 [8228] debug - count: 1
2013-01-05 17:25:34 634 [5692] debug - id: 1
2013-01-05 17:25:34 637 [5692] debug - count: 2
2013-01-05 17:25:34 640 [5692] debug - id: 2
2013-01-05 17:25:34 642 [5692] debug - count: 3
2013-01-05 17:25:34 646 [5692] debug - id: 3
2013-01-05 17:25:34 649 [5692] debug - count: 4
test_ioserivice的執行結果:
[cpp]view plain
copy
print?
2013-01-05 17:26:28 071 [3236] debug - id: 1
2013-01-05 17:26:28 071 [5768] debug - id: 2
2013-01-05 17:26:28 071 [5108] debug - id: 3
2013-01-05 17:26:28 076 [3236] debug - count: 1
2013-01-05 17:26:28 079 [5768] debug - count: 2
2013-01-05 17:26:28 083 [5108] debug - count: 3
2013-01-05 17:26:28 087 [3236] debug - id: 4
2013-01-05 17:26:28 099 [3236] debug - count: 4
從結果可以看到, 在test_strand中print中兩個列印函式成對執行, 在test_ioservice兩個列印函式就沒有執行緒安全可言了.
如果要保證test_ioservice同步, 就要加上mutex, 在**中被注釋的那句.
注意從日誌的執行緒號中可知: 真正執行print()是主線程, ios1, ios2, 而t1, t2, t3, t4執行緒只是往ioservice的佇列中加入任務.
boost的網路庫asio
boost在1.35版本之後終於加入了網路庫asio。春節期間終於得閒能夠一窺究竟,同時將boost.asio和知名的ace框架做一下比較。asio的名字突出了非同步i o的能力,從asio的文件中看到它使用了和ace proactor框架中相似的proactor模式。csdn上也有很多也寫了很多關...
asio製作使用ssl通訊的證書
1,生成ca的key openssl genrsa out ca.key 1024 2048 with out password protected openssl genrsa des3 out ca.key 1024 2048 password protected 2,根據ca的key,生成頂級...
qvfb 中 的作用
root fedora7 qvfb 加上 符號使qvfb程序開啟後shell立即返回,否則會阻塞shell程序,需要再開乙個shell才可以執行minigui程式。即 作用為使得程式在後台執行!每次開啟qvfb都要調解析度和顏色深度,很不爽,可以搞個指令碼。比如,新建個指令碼名為qvfb8,內容這麼...