{"id":3119,"date":"2012-04-02T10:36:35","date_gmt":"2012-04-02T01:36:35","guid":{"rendered":"http:\/\/umezawa.dyndns.info\/wordpress\/?p=3119"},"modified":"2012-04-02T11:41:36","modified_gmt":"2012-04-02T02:41:36","slug":"openbsd-5-0-%e3%81%ae-pthread-%e3%81%af-1-%e3%82%b3%e3%82%a2%e3%81%97%e3%81%8b%e4%bd%bf%e3%82%8f%e3%81%aa%e3%81%84","status":"publish","type":"post","link":"http:\/\/umezawa.dyndns.info\/wordpress\/?p=3119","title":{"rendered":"OpenBSD 5.0 \u306e pthread \u306f 1 \u30b3\u30a2\u3057\u304b\u4f7f\u308f\u306a\u3044"},"content":{"rendered":"<p>AsiaBSDCon \u5e30\u308a\u306e\u540c\u50da\u306b\u5148\u9031\u805e\u3044\u305f\u3093\u3067\u3059\u304c\u3001OpenBSD 5.0 \u306e pthread \u5b9f\u88c5\u3067\u306f\u3001\u8907\u6570\u30b9\u30ec\u30c3\u30c9\u8d70\u3089\u305b\u3066\u3082 1 \u30b3\u30a2\u3057\u304b\u4f7f\u308f\u306a\u3044\uff08\u306e\u3067\u901f\u304f\u306a\u3089\u306a\u3044\uff09\u305d\u3046\u3067\u3059\u3002<\/p>\n<p><!--more--><\/p>\n<p>\u3048\u30fc\u3001\u3068\u601d\u3063\u3066\u4ee5\u4e0b\u306e\u30d7\u30ed\u30b0\u30e9\u30e0\u3067 2 \u30b9\u30ec\u30c3\u30c9\u8d70\u3089\u305b\u3066\u307f\u307e\u3059\u3002<\/p>\n<blockquote>\n<pre>#include &lt;pthread.h&gt;\r\n\r\nvolatile int n;\r\n\r\nvoid *proc(void *arg)\r\n{\r\n        for (;;)\r\n                n++;\r\n}\r\n\r\nint main(void)\r\n{\r\n        pthread_t ptid;\r\n\r\n        pthread_create(&ptid, NULL, proc, NULL);\r\n        proc(NULL);\r\n        return 0;\r\n}<\/pre>\n<\/blockquote>\n<p>\u3093\u3067 top \u30b3\u30de\u30f3\u30c9\u3067 CPU \u4f7f\u7528\u7387\u3092\u898b\u3066\u307f\u308b\u3068\u2026<\/p>\n<blockquote>\n<pre>load averages:  0.38,  0.15,  0.10                    devopenbsd.local 10:04:05\r\n26 processes:  24 idle, 2 on processor\r\nCPU0 states:  0.0% user,  0.0% nice,  0.0% system,  0.0% interrupt,  100% idle\r\nCPU1 states:  0.0% user,  0.0% nice,  0.0% system,  0.0% interrupt,  100% idle\r\nCPU2 states:  0.0% user,  0.0% nice,  0.0% system,  0.0% interrupt,  100% idle\r\nCPU3 states:  100% user,  0.0% nice,  0.0% system,  0.0% interrupt,  0.0% idle\r\nMemory: Real: 14M\/137M act\/tot Free: 347M Cache: 88M Swap: 0K\/1024M\r\n\r\n  PID USERNAME PRI NICE  SIZE   RES STATE     WAIT      TIME    CPU COMMAND\r\n28750 umezawa   64    0 1656K 1244K onproc\/1  -         0:17 56.05% pthread-run\r\n 1304 _syslogd   2    0  624K  960K sleep\/0   poll      2:23  0.00% syslogd\r\n14212 _pflogd    4    0  644K  384K sleep\/2   bpf       1:32  0.00% pflogd\r\n 7883 umezawa    2    0 3476K 2372K sleep\/1   select    1:12  0.00% sshd\r\n\uff08\u4ee5\u4e0b\u7565\uff09<\/pre>\n<\/blockquote>\n<p>\u307b\u3093\u307e\u3084\u3002<\/p>\n<p>\u3061\u306a\u307f\u306b Linux (CentOS 6, kernel-2.6.32-220.7.1.el6.x86_64) \u3060\u3068\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u3061\u3083\u3093\u3068 2 \u30b3\u30a2\u4f7f\u3063\u3066\u3044\u307e\u3059\u3002<\/p>\n<blockquote>\n<pre>top - 10:06:00 up 18 days,  8:43,  9 users,  load average: 1.06, 0.28, 0.09\r\nTasks: 158 total,   2 running, 156 sleeping,   0 stopped,   0 zombie\r\nCpu0  :  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st\r\nCpu1  :100.0%us,  0.0%sy,  0.0%ni,  0.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st\r\nCpu2  :  0.3%us,  0.3%sy,  0.0%ni, 99.3%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st\r\nCpu3  :100.0%us,  0.0%sy,  0.0%ni,  0.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st\r\nMem:    502224k total,   438068k used,    64156k free,    33720k buffers\r\nSwap:  1015800k total,    21324k used,   994476k free,   195152k cached\r\n\r\n  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND\r\n13661 umezawa   20   0 16440  496  392 R 200.0  0.1   1:24.29 pthread-run\r\n    1 root      20   0 19272  696  508 S  0.0  0.1   0:01.21 init\r\n    2 root      20   0     0    0    0 S  0.0  0.0   0:00.01 kthreadd\r\n    3 root      RT   0     0    0    0 S  0.0  0.0   0:00.13 migration\/0\r\n\uff08\u4ee5\u4e0b\u7565\uff09<\/pre>\n<\/blockquote>\n<p>OpenBSD \u306e pthread \u306b\u306f\u30b9\u30d4\u30f3\u30ed\u30c3\u30af\u304c\u306a\u3044\u3093\u3067\u3059\u304c\u3001\u305d\u308c\u306f\u3053\u306e\u305b\u3044\u3060\u3063\u305f\u3093\u3067\u3059\u306d\u3002\uff08\u30b7\u30f3\u30b0\u30eb\u30d7\u30ed\u30bb\u30c3\u30b5\u74b0\u5883\u3067\u306f\u30b9\u30d4\u30f3\u30ed\u30c3\u30af\u306f\u4f7f\u3063\u3066\u3044\u3051\u306a\u3044\uff09<\/p>\n<p>\u305f\u3060\u3057\u3001\u3088\u304f\u3042\u308b\u30e6\u30fc\u30b6\u30fc\u30e9\u30f3\u30c9\u30b9\u30ec\u30c3\u30c9\uff08\u5354\u8abf\u7684\u30de\u30eb\u30c1\u30b9\u30ec\u30c3\u30c9\uff09\u3068\u9055\u3044\u3001\u3061\u3083\u3093\u3068\u30d7\u30ea\u30a8\u30f3\u30d7\u30c6\u30a3\u30d6\u3067\u3059\u3002\u3064\u307e\u308a\u3001\u30b9\u30ec\u30c3\u30c9\u3092\u5207\u308a\u66ff\u3048\u308b\u95a2\u6570\u3084\u30b7\u30b9\u30c6\u30e0\u30b3\u30fc\u30eb\u3092\u547c\u3070\u306a\u304f\u3066\u3082\u3001\u30ab\u30fc\u30cd\u30eb\u304c\u52dd\u624b\u306b\u5207\u308a\u66ff\u3048\u3066\u304f\u308c\u307e\u3059\u3002\u3053\u308c\u306f\u4ee5\u4e0b\u306e\u30b3\u30fc\u30c9\u3067\u78ba\u8a8d\u3067\u304d\u307e\u3059\u3002<\/p>\n<blockquote>\n<pre>#include &lt;pthread.h&gt;\r\n#include &lt;stdio.h&gt;\r\n#include &lt;unistd.h&gt;\r\n\r\nvolatile long long n0 = 0;\r\nvolatile long long n1 = 0;\r\n\r\nvoid *proc(void *arg)\r\n{\r\n        volatile long long *np = arg;\r\n\r\n        for (;;)\r\n                (*np)++;\r\n}\r\n\r\nvoid sigint(int sig)\r\n{\r\n        printf(\"\\n\");\r\n        printf(\"n0 = %lld\\n\", n0);\r\n        printf(\"n1 = %lld\\n\", n1);\r\n}\r\n\r\nint main(void)\r\n{\r\n        pthread_t ptid;\r\n\r\n        signal(SIGINT, sigint);\r\n        pthread_create(&ptid, NULL, proc, (void *)&n1);\r\n        proc((void *)&n0);\r\n        return 0;\r\n}<\/pre>\n<\/blockquote>\n<p>printf() \u306f\u30b7\u30b0\u30ca\u30eb\u30bb\u30fc\u30d5\u3067\u306f\u306a\u3044\u3068\u304b\u7d30\u304b\u3044\u3053\u3068\u306f\u8a00\u3044\u3063\u3053\u306a\u3057\u3067\u3002<\/p>\n<p>\u3067\u3001\u3053\u308c\u3092\u5b9f\u884c\u3059\u308b\u3068\u3001<\/p>\n<blockquote>\n<pre>[umezawa@devopenbsd:ttyp0 ~]$ .\/pthread-run\r\n^C\r\nn0 = 203792139\r\nn1 = 206249524\r\n^C\r\nn0 = 470482870\r\nn1 = 474856626\r\n^C\r\nn0 = 830385269\r\nn1 = 828581258\r\n^C\r\nn0 = 1135243828\r\nn1 = 1139698685<\/pre>\n<\/blockquote>\n<p>\u3068\u306a\u3063\u3066\u30012 \u3064\u306e\u30b9\u30ec\u30c3\u30c9\u304c\u540c\u3058\u6642\u9593\u3060\u3051\u8d70\u3063\u3066\u3044\u308b\u3053\u3068\u304c\u5206\u304b\u308a\u307e\u3059\u3002\uff08\u5354\u8abf\u7684\u30de\u30eb\u30c1\u30b9\u30ec\u30c3\u30c9\u306e\u5834\u5408\u3060\u3068\u4e00\u65b9\u306e\u30ab\u30a6\u30f3\u30bf\u3060\u3051\u304c\u9032\u3093\u3067\u3044\u304f\u306f\u305a\uff09<\/p>\n<p>OpenBSD-current \u3067\u306f\u8907\u6570\u30b3\u30a2\u4f7f\u3046\u3088\u3046\u306b\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u4e2d\u3060\u305d\u3046\u3067\u3059\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>AsiaBSDCon \u5e30\u308a\u306e\u540c\u50da\u306b\u5148\u9031\u805e\u3044\u305f\u3093\u3067\u3059\u304c\u3001OpenBSD 5.0 \u306e pthread \u5b9f\u88c5\u3067\u306f\u3001\u8907\u6570\u30b9\u30ec\u30c3\u30c9\u8d70\u3089\u305b\u3066\u3082 1 \u30b3\u30a2\u3057\u304b\u4f7f\u308f\u306a\u3044\uff08\u306e\u3067\u901f\u304f\u306a\u3089\u306a\u3044\uff09\u305d\u3046\u3067\u3059\u3002<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[7],"tags":[],"class_list":["post-3119","post","type-post","status-publish","format-standard","hentry","category-software"],"_links":{"self":[{"href":"http:\/\/umezawa.dyndns.info\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/3119","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/umezawa.dyndns.info\/wordpress\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/umezawa.dyndns.info\/wordpress\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/umezawa.dyndns.info\/wordpress\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/umezawa.dyndns.info\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=3119"}],"version-history":[{"count":8,"href":"http:\/\/umezawa.dyndns.info\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/3119\/revisions"}],"predecessor-version":[{"id":3127,"href":"http:\/\/umezawa.dyndns.info\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/3119\/revisions\/3127"}],"wp:attachment":[{"href":"http:\/\/umezawa.dyndns.info\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3119"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/umezawa.dyndns.info\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=3119"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/umezawa.dyndns.info\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=3119"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}