{"id":1336,"date":"2011-08-19T00:44:03","date_gmt":"2011-08-18T15:44:03","guid":{"rendered":"http:\/\/mattyan.net\/blog\/?p=1336"},"modified":"2011-08-19T00:44:03","modified_gmt":"2011-08-18T15:44:03","slug":"%e3%82%af%e3%83%a9%e3%82%b9%e3%81%ae%e3%83%a1%e3%83%b3%e3%83%90%e9%96%a2%e6%95%b0%e3%82%92%e3%83%9e%e3%83%ab%e3%83%81%e3%82%b9%e3%83%ac%e3%83%83%e3%83%89%e3%81%a7%e5%8b%95%e3%81%8b%e3%81%99%e3%81%9f","status":"publish","type":"post","link":"https:\/\/mattyan.net\/blog\/?p=1336","title":{"rendered":"\u30af\u30e9\u30b9\u306e\u30e1\u30f3\u30d0\u95a2\u6570\u3092\u30de\u30eb\u30c1\u30b9\u30ec\u30c3\u30c9\u3067\u52d5\u304b\u3059\u305f\u3081\u306e\u30e1\u30e2\u66f8\u304d"},"content":{"rendered":"<p>\u30af\u30e9\u30b9\u306e\u30e1\u30f3\u30d0\u95a2\u6570\u3092SDL\u306eSDL_CreateThread\u95a2\u6570\u3067\u6271\u3046\u305f\u3081\u306e\u30e1\u30e2\u66f8\u304d\u3002\u3061\u3087\u3063\u3068\u6d41\u7528\u3059\u308c\u3070\u4ed6\u306e\u30e9\u30a4\u30d6\u30e9\u30ea\u3067\u3082\u4f7f\u3048\u308b\u304b\u3082?<br \/>\nstatic\u30e1\u30f3\u30d0\u6e21\u305b\u3070\u4e00\u767a\u306a\u3093\u3060\u308d\u3046\u3051\u3069\u3002\u6d3e\u751f\u3059\u308b\u3053\u3068\u3092\u8003\u3048\u308b\u3068\u306a\u3093\u304b\u8272\u3005\u9762\u5012\u304f\u3055\u305d\u3046\u306a\u3093\u3067\u3001\u666e\u901a\u306e\u30e1\u30f3\u30d0\u95a2\u6570\u3092\u547c\u3073\u51fa\u3059\u3088\u3046\u306b\u3057\u305f\u3002<\/p>\n<h3>\u57fa\u5e95\u30af\u30e9\u30b9\u306e\u7528\u610f<\/h3>\n<p>\u30de\u30eb\u30c1\u30b9\u30ec\u30c3\u30c9\u3067\u52d5\u304b\u3059\u30af\u30e9\u30b9\u306e\u57fa\u5e95\u30af\u30e9\u30b9\u3067\u306f\u3001\u81f3\u308b\u3068\u3053\u308d\u3067\u6d3e\u751f\u30af\u30e9\u30b9\u306e\u578b\u304c\u308f\u304b\u3089\u306a\u3044\u3068\u4f7f\u3048\u306a\u3044\u306e\u3067\u3001\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30af\u30e9\u30b9\u3067\u4f5c\u6210\u3002<\/p>\n<pre><code class=\"\" data-line=\"\">\ntemplate &lt;typename T&gt; class Thread{\n\t\tprivate:\n\t\t\tstruct ThreadParameter{\n\t\t\t\tT    *instance;\n\t\t\t\tvoid *parameter;\n\t\t\t};\n\t\t\tSDL_Thread *thread;\n\t\t\t\/**\n\t\t\t * \u30b9\u30ec\u30c3\u30c9\u95a2\u6570\u547c\u3073\u51fa\u3057\n\t\t\t * @param[in] param \u30b9\u30ec\u30c3\u30c9\u60c5\u5831\n\t\t\t * @return function()\u306e\u623b\u308a\u5024\n\t\t\t *\/\n\t\t\tstatic int callThread(void *param){\n\t\t\t\tThreadParameter *tp = pointer_cast&lt;ThreadParameter *&gt;(param);\n\t\t\t\treturn pointer_cast&lt;T *&gt;(tp-&gt;instance)-&gt;function(tp-&gt;parameter);\n\t\t\t}\n\t\tpublic:\n\t\t\t\/**\n\t\t\t * \u30b9\u30ec\u30c3\u30c9\u5b9f\u884c\u95a2\u6570\n\t\t\t * @param[in] param \u5f15\u6570\n\t\t\t * @return \u4e0d\u660e\n\t\t\t *\/\n\t\t\tvirtual int function(void *param) = 0;\n\t\t\t\/**\n\t\t\t * \u30b9\u30ec\u30c3\u30c9\u5b9f\u884c\u95a2\u6570\n\t\t\t * @param[in] p     \u6d3e\u751f\u30af\u30e9\u30b9\u306e\u30dd\u30a4\u30f3\u30bf\n\t\t\t * @param[in] param \u30b9\u30ec\u30c3\u30c9\u306b\u6e21\u3059\u5f15\u6570\n\t\t\t *\/\n\t\t\tvoid run(T *p,void *param){\n\t\t\t\tThreadParameter tp = {p,param};\n\t\t\t\tthis-&gt;thread = SDL_CreateThread(&amp;Thread&lt;T&gt;::callThread,&amp;tp);\n\t\t\t}\n\t};\n<\/code><\/pre>\n<p>1.private\u306bSDL_CreateThread\u304b\u3089\u547c\u3093\u3067\u3082\u3089\u3046\u30e1\u30f3\u30d0\u95a2\u6570\u3092static\u3067\u5ba3\u8a00\u3002\u305d\u306e\u95a2\u6570\u3078\u306e\u5f15\u6570\u3068\u3057\u3066\u3001\u6d3e\u751f\u30af\u30e9\u30b9\u306e\u30dd\u30a4\u30f3\u30bf\u3068\u30b9\u30ec\u30c3\u30c9\u3078\u306e\u5f15\u6570\u3092\u307e\u3068\u3081\u305f\u69cb\u9020\u4f53\u3092\u6e21\u3059\u3002<br \/>\n2.callThread\u95a2\u6570\u3067\u306f\u3001\u6e21\u3055\u308c\u305f\u30dd\u30a4\u30f3\u30bf\u304b\u3089\u6d3e\u751f\u30af\u30e9\u30b9\u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u306e\u30dd\u30a4\u30f3\u30bf\u3092\u53d6\u308a\u51fa\u3057\u3066\u3001\u30de\u30eb\u30c1\u30b9\u30ec\u30c3\u30c9\u3067\u5b9f\u884c\u3057\u305f\u3044\u30e1\u30f3\u30d0\u95a2\u6570\u3092\u547c\u3073\u51fa\u3059\u3002<br \/>\n\u6d3e\u751f\u30af\u30e9\u30b9<\/p>\n<pre><code class=\"\" data-line=\"\">\nclass Add:public Thread&lt;Add&gt;{\n\tpublic:\n\t\tvirtual int function(void *p);\n};\nint Add::function(void *p){\n\tFILE *file = fopen(pointer_cast&lt;char *&gt;(p),&quot;w&quot;);\n\tfprintf(file,&quot;start = %d\\n&quot;,SDL_GetTicks());\n\tfor(int i=0;i&lt;2000;i++){\n\t\tfprintf(file,&quot;i = %d\\n&quot;,i);\n\t}\n\tfprintf(file,&quot;end = %d\\n&quot;,SDL_GetTicks());\n\tfclose(file);\n\treturn 0;\n}\n<\/code><\/pre>\n<p>\u30de\u30eb\u30c1\u30b9\u30ec\u30c3\u30c9\u3067\u4f7f\u7528\u3059\u308b\u95a2\u6570\u3092\u30aa\u30fc\u30d0\u30fc\u30e9\u30a4\u30c9\u3059\u308b\u3060\u3051\u3002<br \/>\n\u3053\u308c\u304c\u547c\u3073\u51fa\u3055\u308c\u308b\u3068\u3001\u30d7\u30ed\u30b0\u30e9\u30e0\u304c\u8d77\u52d5\u3057\u3066\u304b\u3089\u306e\u30df\u30ea\u79d2\u3092\u8a18\u9332\u3057\u305f\u3042\u3068\u30012000\u56de\u307b\u3069\u30eb\u30fc\u30d7\u3057\u3066\u3001\u7d42\u4e86\u6642\u9593\u3092\u8a18\u9332\u3057\u3066\u30b9\u30ec\u30c3\u30c9\u7d42\u4e86\u3059\u308b\u4ed5\u7d44\u307f\u3002<br \/>\n\u5b9f\u884c\u7d50\u679c\u306f<\/p>\n<table border=\"1\">\n<tr>\n<td>\u30b9\u30ec\u30c3\u30c9ID<\/td>\n<td>\u958b\u59cb\u6642\u523b<\/td>\n<td>\u7d42\u4e86\u6642\u523b<\/td>\n<td><\/tr>\n<tr>\n<td>1<\/td>\n<td>515<\/td>\n<td>536<\/td>\n<td><\/tr>\n<tr>\n<td>2<\/td>\n<td>515<\/td>\n<td>536<\/td>\n<td><\/tr>\n<\/table>\n<p>\u3060\u304b\u3089\u3001\u30de\u30eb\u30c1\u30b9\u30ec\u30c3\u30c9\u3067\u52d5\u3044\u3066\u308b\u3002\u306f\u305a\u2026<br \/>\n\u3061\u306a\u307f\u306bpointer_cast\u306f\u3053\u3093\u306a\u95a2\u6570<\/p>\n<pre><code class=\"\" data-line=\"\">\n\/**\n * \u30dd\u30a4\u30f3\u30bf\u30fc\u30ad\u30e3\u30b9\u30c8\n * @param[in] p \u30ad\u30e3\u30b9\u30c8\u3059\u308b\u30dd\u30a4\u30f3\u30bf\u30fc\n * @return \u30ad\u30e3\u30b9\u30c8\u7d50\u679c\n *\/\ntemplate &lt;typename T&gt; inline T pointer_cast(void *p){return reinterpret_cast&lt;T&gt;(p);}\n<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\u30af\u30e9\u30b9\u306e\u30e1\u30f3\u30d0\u95a2\u6570\u3092SDL\u306eSDL_CreateThread\u95a2\u6570\u3067\u6271\u3046\u305f\u3081\u306e\u30e1\u30e2\u66f8\u304d\u3002\u3061\u3087\u3063\u3068\u6d41\u7528\u3059\u308c\u3070\u4ed6\u306e\u30e9\u30a4\u30d6\u30e9\u30ea\u3067\u3082\u4f7f\u3048\u308b\u304b\u3082? static\u30e1\u30f3\u30d0\u6e21\u305b\u3070\u4e00\u767a\u306a\u3093\u3060\u308d\u3046\u3051\u3069\u3002\u6d3e\u751f\u3059\u308b\u3053\u3068\u3092\u8003\u3048\u308b\u3068\u306a\u3093\u304b\u8272\u3005\u9762\u5012\u304f\u3055 &hellip; <a href=\"https:\/\/mattyan.net\/blog\/?p=1336\" class=\"more-link\">\u7d9a\u304d\u3092\u8aad\u3080 <span class=\"screen-reader-text\">\u30af\u30e9\u30b9\u306e\u30e1\u30f3\u30d0\u95a2\u6570\u3092\u30de\u30eb\u30c1\u30b9\u30ec\u30c3\u30c9\u3067\u52d5\u304b\u3059\u305f\u3081\u306e\u30e1\u30e2\u66f8\u304d<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3,1],"tags":[],"class_list":["post-1336","post","type-post","status-publish","format-standard","hentry","category-3","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/mattyan.net\/blog\/index.php?rest_route=\/wp\/v2\/posts\/1336","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mattyan.net\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mattyan.net\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mattyan.net\/blog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mattyan.net\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1336"}],"version-history":[{"count":0,"href":"https:\/\/mattyan.net\/blog\/index.php?rest_route=\/wp\/v2\/posts\/1336\/revisions"}],"wp:attachment":[{"href":"https:\/\/mattyan.net\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1336"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mattyan.net\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1336"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mattyan.net\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1336"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}