6868
6969 </ head >
7070 < body >
71- < header data-kunai-mdinfo ="{"meta": {"header": ["mutex"], "namespace": ["std"], "id-type": ["class template"], "cpp": ["cpp11"]}, "sources": [{"id": "c17a48370b54fcb08a37155fd51b6da277635568", "source": "#include <iostream>\n#include <thread>\n#include <mutex>\n\n// std::cout\u3078\u306e\u30a2\u30af\u30bb\u30b9\u3092\u6392\u4ed6\u7684\u306b\u3059\u308b\nstd::mutex print_mtx_;\nvoid safe_print(int x)\n{\n std::lock_guard<std::mutex> lock{print_mtx_};\n std::cout << \"value:\" << x << std::endl;\n}\n\nint main()\n{\n std::thread t1([]{\n for (int i = 0; i < 5; i++) {\n safe_print(i);\n }\n });\n std::thread t2([]{\n for (int i = 0; i < 5; i++) {\n safe_print(5 + i);\n }\n });\n\n t1.join();\n t2.join();\n}\n"}], "page_id": ["reference", "mutex", "lock_guard"]} ">
71+ < header data-kunai-mdinfo ="{"meta": {"header": ["mutex"], "namespace": ["std"], "id-type": ["class template"], "cpp": ["cpp11"]}, "sources": [{"id": "21a4811a86be4816d05503cd9cb32b2f75c82ba0", "source": "#include <iostream>\n#include <thread>\n#include <mutex>\n\n// std::cout\u3078\u306e\u30a2\u30af\u30bb\u30b9\u3092\u6392\u4ed6\u7684\u306b\u3059\u308b\nstd::mutex print_mtx_;\nvoid safe_print(int x)\n{\n std::lock_guard<std::mutex> lock{print_mtx_};\n std::cout << \"value:\" << x << std::endl;\n}\n\n#include <random>\nvoid sleep_random()\n{\n std::random_device seed_gen;\n std::mt19937 engine{seed_gen()};\n std::uniform_int_distribution<int> dist{1, 10};\n\n int sleep_ms = dist(engine);\n std::this_thread::sleep_for(std::chrono::milliseconds{sleep_ms});\n}\n\nint main()\n{\n std::thread t1([]{\n for (int i = 0; i < 5; i++) {\n safe_print(i);\n sleep_random();\n }\n });\n std::thread t2([]{\n for (int i = 0; i < 5; i++) {\n safe_print(5 + i);\n sleep_random();\n }\n });\n\n t1.join();\n t2.join();\n}\n"}], "page_id": ["reference", "mutex", "lock_guard"]} ">
7272 < nav class ="navbar navbar-default " role ="navigation ">
7373 < div class ="container-fluid ">
7474 < div class ="navbar-header ">
188188
189189 < p class ="text-right "> < small >
190190 最終更新日時(UTC):
191- < span itemprop ="datePublished " content ="2024-12-21T02:13:56 ">
192- 2024年12月21日 02時13分56秒
191+ < span itemprop ="datePublished " content ="2024-12-21T02:23:16 ">
192+ 2024年12月21日 02時23分16秒
193193 </ span >
194194 < br />
195195 < span itemprop ="author " itemscope itemtype ="http://schema.org/Person ">
@@ -270,7 +270,7 @@ <h2>メンバ型</h2>
270270</ table >
271271< h2 > 例</ h2 >
272272< h3 > 基本的な使い方</ h3 >
273- < p > < div class ="yata " id ="c17a48370b54fcb08a37155fd51b6da277635568 "> < div class ="codehilite "> < pre > < span > </ span > < code > < span class ="cp "> #include</ span > < span class ="cpf "> < a href ="../iostream.html "> <iostream></ a > </ span > < span class ="cp "> </ span >
273+ < p > < div class ="yata " id ="21a4811a86be4816d05503cd9cb32b2f75c82ba0 "> < div class ="codehilite "> < pre > < span > </ span > < code > < span class ="cp "> #include</ span > < span class ="cpf "> < a href ="../iostream.html "> <iostream></ a > </ span > < span class ="cp "> </ span >
274274< span class ="cp "> #include</ span > < span class ="cpf "> < a href ="../thread.html "> <thread></ a > </ span > < span class ="cp "> </ span >
275275< span class ="cp "> #include</ span > < span class ="cpf "> < a href ="../mutex.html "> <mutex></ a > </ span > < span class ="cp "> </ span >
276276
@@ -282,16 +282,29 @@ <h3>基本的な使い方</h3>
282282 < span class ="n "> < a href ="../iostream/cout.html "> std::cout</ a > </ span > < span class ="o "> <<</ span > < span class ="s "> "value:"</ span > < span class ="o "> <<</ span > < span class ="n "> x</ span > < span class ="o "> <<</ span > < span class ="n "> < a href ="../ostream/endl.html "> std::endl</ a > </ span > < span class ="p "> ;</ span >
283283< span class ="p "> }</ span >
284284
285+ < span class ="cp "> #include</ span > < span class ="cpf "> < a href ="../random.html "> <random></ a > </ span > < span class ="cp "> </ span >
286+ < span class ="kt "> void</ span > < span class ="nf "> sleep_random</ span > < span class ="p "> ()</ span >
287+ < span class ="p "> {</ span >
288+ < span class ="n "> < a href ="../random/random_device.html "> std::random_device</ a > </ span > < span class ="n "> seed_gen</ span > < span class ="p "> ;</ span >
289+ < span class ="n "> < a href ="../random/mt19937.html "> std::mt19937</ a > </ span > < span class ="n "> engine</ span > < span class ="p "> {</ span > < span class ="n "> < a href ="../random/random_device/op_call.html "> seed_gen()</ a > </ span > < span class ="p "> };</ span >
290+ < span class ="n "> < a href ="../random/uniform_int_distribution.html "> std::uniform_int_distribution</ a > </ span > < span class ="o "> <</ span > < span class ="kt "> int</ span > < span class ="o "> ></ span > < span class ="n "> dist</ span > < span class ="p "> {</ span > < span class ="mi "> 1</ span > < span class ="p "> ,</ span > < span class ="mi "> 10</ span > < span class ="p "> };</ span >
291+
292+ < span class ="kt "> int</ span > < span class ="n "> sleep_ms</ span > < span class ="o "> =</ span > < span class ="n "> dist</ span > < span class ="p "> (</ span > < span class ="n "> engine</ span > < span class ="p "> );</ span >
293+ < span class ="n "> std</ span > < span class ="o "> ::</ span > < span class ="n "> this_thread</ span > < span class ="o "> ::</ span > < span class ="n "> sleep_for</ span > < span class ="p "> (</ span > < span class ="n "> < a href ="../chrono/duration_aliases.html "> std::chrono::milliseconds</ a > </ span > < span class ="p "> {</ span > < span class ="n "> sleep_ms</ span > < span class ="p "> });</ span >
294+ < span class ="p "> }</ span >
295+
285296< span class ="kt "> int</ span > < span class ="nf "> main</ span > < span class ="p "> ()</ span >
286297< span class ="p "> {</ span >
287298 < span class ="n "> < a href ="../thread/thread.html "> std::thread</ a > </ span > < span class ="n "> t1</ span > < span class ="p "> ([]{</ span >
288299 < span class ="k "> for</ span > < span class ="p "> (</ span > < span class ="kt "> int</ span > < span class ="n "> i</ span > < span class ="o "> =</ span > < span class ="mi "> 0</ span > < span class ="p "> ;</ span > < span class ="n "> i</ span > < span class ="o "> <</ span > < span class ="mi "> 5</ span > < span class ="p "> ;</ span > < span class ="n "> i</ span > < span class ="o "> ++</ span > < span class ="p "> )</ span > < span class ="p "> {</ span >
289300 < span class ="n "> safe_print</ span > < span class ="p "> (</ span > < span class ="n "> i</ span > < span class ="p "> );</ span >
301+ < span class ="n "> sleep_random</ span > < span class ="p "> ();</ span >
290302 < span class ="p "> }</ span >
291303 < span class ="p "> });</ span >
292304 < span class ="n "> < a href ="../thread/thread.html "> std::thread</ a > </ span > < span class ="n "> t2</ span > < span class ="p "> ([]{</ span >
293305 < span class ="k "> for</ span > < span class ="p "> (</ span > < span class ="kt "> int</ span > < span class ="n "> i</ span > < span class ="o "> =</ span > < span class ="mi "> 0</ span > < span class ="p "> ;</ span > < span class ="n "> i</ span > < span class ="o "> <</ span > < span class ="mi "> 5</ span > < span class ="p "> ;</ span > < span class ="n "> i</ span > < span class ="o "> ++</ span > < span class ="p "> )</ span > < span class ="p "> {</ span >
294306 < span class ="n "> safe_print</ span > < span class ="p "> (</ span > < span class ="mi "> 5</ span > < span class ="o "> +</ span > < span class ="n "> i</ span > < span class ="p "> );</ span >
307+ < span class ="n "> sleep_random</ span > < span class ="p "> ();</ span >
295308 < span class ="p "> }</ span >
296309 < span class ="p "> });</ span >
297310
0 commit comments