[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 05/09 20:36 / Filesize : 218 KB / Number-of Response : 953
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C++相談室 part78



1 名前:v(^・^)v mailto:sage [2010/02/13(土) 23:18:03 ]
C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレに
お願いします。

前スレ
C++相談室 part77
pc12.2ch.net/test/read.cgi/tech/1263556932/

75 名前:デフォルトの名無しさん mailto:sage [2010/02/16(火) 15:59:39 ]
そう思うなら思い切ってpublic変数にすればいいだろ
でもgetter/setterを敢えて持つ理由は、プログラマに「今private変数を
いじってますよ」という事を常に意識させる効果がある

76 名前:デフォルトの名無しさん mailto:sage [2010/02/16(火) 16:10:53 ]
>>72
class widget {
public:
inline void set_x(int _x) { x = _x; }
inline int get_x(void) { return x; }
private:
int x;
};

↓内部仕様を変更したくなった

class widget {
public:
inline void set_x(int _x) { p->set_x(_x); }
inline int get_x(void) { return p->get_x(); }
private:
impl *p;
};

しっかり隠蔽になってるね
基本的に公開する必要があるなら全部アクセサでいい
未来永劫仕様を変えない保証があるなら丸出しでもいい

コンストラクタの分だけセッターを作る必要はない
単純セッターなら普通は
void set(const Obj &obj) { m_obj = obj; }
hoge.set(Obj(a1, a2));
こうする

77 名前:デフォルトの名無しさん mailto:sage [2010/02/16(火) 16:39:05 ]
>>75
一貫性がないのは嫌なので、public変数にするとなると全てのクラスをpublic変数にする事になって、これも嫌な感じがします。

>>76
確かに隠蔽性がなくなるわけではありませんでした。
インターフェイスがすっきりしないのが嫌なところですね。

設定値が多い時は、構造体に纏めてget/setするという事ですね。

78 名前:デフォルトの名無しさん mailto:sage [2010/02/16(火) 17:08:13 ]
そのたくさんある変数はすべてset/getする必要があるの?
内部実装のためにあるデータだってあるでしょ

外部から見たときにset/getする必要があるやつだけ
publicなsetter/getterを定義すればいいよ

79 名前:デフォルトの名無しさん mailto:sage [2010/02/16(火) 17:30:04 ]
vectorにクラスを入れるということは普通しないのでしょうか?

80 名前:デフォルトの名無しさん mailto:sage [2010/02/16(火) 17:30:44 ]
よくやる

81 名前:デフォルトの名無しさん mailto:sage [2010/02/16(火) 17:37:08 ]
むしろやらないでどうする

82 名前:デフォルトの名無しさん mailto:sage [2010/02/16(火) 17:40:03 ]
>>79
とても若干良くある
クラスのコピーコストが気になるレベルならポインタ格納するなりlist使うなりするけど。

83 名前:デフォルトの名無しさん mailto:sage [2010/02/16(火) 17:49:29 ]
>>60
明確な実装方法を表したサイトってないの?



84 名前:デフォルトの名無しさん mailto:sage [2010/02/16(火) 17:51:39 ]
クラスを入れる、っていう表現がまかり通るのが驚き。

85 名前:デフォルトの名無しさん mailto:sage [2010/02/16(火) 17:58:08 ]
>>83
そんなものはない!

86 名前:デフォルトの名無しさん mailto:sage [2010/02/16(火) 18:03:51 ]
#define class struct
オヌヌメ

87 名前:デフォルトの名無しさん mailto:sage [2010/02/16(火) 18:09:34 ]
>>71
なるほど
ちなみにスレッドプールしておいたスレッドの空き/使用中の管理というのは自分でやる必要があるのでしょうか?

88 名前:79 mailto:sage [2010/02/16(火) 18:25:17 ]
よくやるんですね。ありがとうございます。
自分のプログラムで変なエラーが出てしまったので、もしかしたら間違ったやり方をしているのかと思いました。
できるんなら、何とかしてみます。

89 名前:デフォルトの名無しさん mailto:sage [2010/02/16(火) 18:35:46 ]
たぶんコピー、代入あたりで間違えてるんだろうな

90 名前:デフォルトの名無しさん mailto:sage [2010/02/16(火) 18:43:27 ]
pimplを勧める

91 名前:デフォルトの名無しさん mailto:sage [2010/02/16(火) 18:45:18 ]
#undef class

92 名前:デフォルトの名無しさん mailto:sage [2010/02/16(火) 19:00:34 ]
>>87
beginthread云々からWin32と仮定すると
IOCPに管理させるのが楽かもよ。

93 名前:デフォルトの名無しさん mailto:sage [2010/02/16(火) 20:48:19 ]
POSIXじゃないの?



94 名前:デフォルトの名無しさん mailto:sage [2010/02/16(火) 21:25:46 ]
おめーはpthreadも知らずWin32も知らないのか

95 名前:デフォルトの名無しさん mailto:sage [2010/02/16(火) 22:00:15 ]
誰に言ってるんだ?

96 名前:デフォルトの名無しさん mailto:sage [2010/02/16(火) 22:12:52 ]
誰が?

97 名前:デフォルトの名無しさん mailto:sage [2010/02/16(火) 22:22:49 ]
ワッフルワッフル

98 名前:97 mailto:sage [2010/02/16(火) 22:23:48 ]
誤爆しました。

99 名前:デフォルトの名無しさん mailto:sage [2010/02/16(火) 22:24:19 ]
え?

100 名前:デフォルトの名無しさん mailto:sage [2010/02/16(火) 22:25:08 ]
ww

101 名前:デフォルトの名無しさん mailto:sage [2010/02/16(火) 22:38:45 ]
うむ。苦しゅうない。

102 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 00:38:25 ]
何の?

103 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 01:05:07 ]
>>53
以前メモリプール使用のスマポで計測結果張ったものですが、こんなメモリプールつこてます。
ttp://codepad.org/rrn4ZXUQ
メモリ的にも処理的にも無駄を減らした実装でまだまだシンプルですが、使えるポイントはあると思います。



104 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 01:11:05 ]

int get()
{
return mVal;
}

これよりも効率よくmValを外部に返す方法ってありますか?

105 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 01:17:18 ]
>>72
まずインターフェースだけ考える。どんな変数を持ってるとかは敢えて考えないぐらいのつもりで、
とにかく利用者にとって自然な操作だけをメンバ関数(コンストラクタ含む)として列挙する。

それが済んでから、それらのメンバ関数を実装するための変数を必要なだけそろえる。

これなら「隠蔽になっていない」などという心配は起こりようが無いし、余計なコードも発生しない。

インターフェースを考える段階で、利用者から見て中にどんなデータが入っているのか
明らかでありメンバ関数呼び出しが煩雑なだけに見えるようなら、ただの構造体でいい。

106 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 01:38:40 ]
>>103
Test継承したら使えないジャマイカ

107 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 02:06:51 ]
>>104 ねーよjk

108 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 02:13:11 ]
>>104
#define get() mVal

foo.get();

109 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 04:46:59 ]
スレッドセーフなキューが作れれば全てのマルチスレッドは統一的に扱えるはず
とおもって探した。
lock-free wiat-freeかはしらないがこれ。無料だとこれくらいかと。

Thread Safe Template Library
sourceforge.jp/projects/freshmeat_tstl/

IntelR Threading Building Blocks
www.threadingbuildingblocks.org/


110 名前: ◆GWRSHcLrd6 [2010/02/17(水) 07:22:13 ]
>>103
あ、なんか僕が今作りなおしているやつも似た作りです。
これが効率よさそうですよね。

そういえばboostのsimple_segregated_storage(だっけ?)ってどういう仕組み何でしょうか?

>>109
なるほど。ちょいと見てみます

111 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 10:38:15 ]
可変長引数パラメータて、使いどころがよくわからないんですが
どういった時に使うんでしょうか?
同じようなことができるboostのfunctionもです。

掴み所を教えてください

112 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 10:58:46 ]
>>111
可変長引数パラメータって何?
関数引数の ... のこと?

113 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 11:23:46 ]
>>112
そうです。
使い方はわかるし、boostも使い方は理解できるんですが
何に使うのかがわからないんです。

特に後者のboostは、仮想関数の引数としてfunctionを利用しても
結局テンプレートだからオーバーロードになるわけですよね?
呼び出し側で型指定するわけですし、多態的に動作させるのもできないのでは?

ここで混乱している感じです。



114 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 11:26:48 ]
>>113
printf() とか。
まぁ C++ では基本的に使わないな。

boost::function とは関係ないと思うけど、何のこと言ってんの?

115 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 11:32:54 ]
>>114
返り値の型、引数の型を指定して関数ポインタを楽に生成できるじゃないですか。

このテクニックを利用して、引数の数、型が変化する処理を多態的にさせたいんです。

116 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 11:43:01 ]
>>113
可変長引数に関しては>>114に同じくprintfがいい例だと思う。
可変長引数は、C++ではあまり推奨おらず、printfに関してもboost::formatを使った方がいい。
ttp://www.kmonos.net/alang/boost/classes/format.html

boost::functionに関しては、引数の型(個数も含む)が違えば、boost::functionの型も変わる(boost::functionはクラステンプレートであってクラスそのものではない)。
テンプレートによる静的多態なので、仮想関数の動的多態のようには扱えない。

117 名前:116 mailto:sage [2010/02/17(水) 11:55:42 ]
付け加えておくと、
・可変長引数とboost::functionの使いどころは別である
・boost::functionは関数ポインタを使いやすくした物

あと、>>116の最後の行は紛らわしい書き方だった。
boost::functionの1つの具現化(戻り値と引数の型が同じ)においては、関数ポインタによる動的多態である。

118 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 12:11:45 ]
>>117
なるほど!
多態とはまた別物なんですね。
ボリモルフィズムが一気に広がるかもと思ったんですがね。

ありがとうございました。

119 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 12:22:49 ]
>>115
boost::function<void ()> で、引数は全部 bind するとか、
boost::function<void (std::vector<boost::any> const&)> で引数について型消去しながらやりくりするとか。

120 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 13:01:27 ]
(´;ω;`)さ、さ、さむいお

121 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 13:22:58 ]
利用者が仮想関数を呼び出す時、仮想関数の実装を知らなけば引数を渡せなくなって、ポリモーフィズムのメリットがなくなる気がするけど。

122 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 14:15:09 ]
いらない

123 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 15:13:58 ]
非ブロッキング、ロックフリー、ウェイトフリーの定義

www.gameenginejp.com/misc/2010/2010.html



124 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 15:37:29 ]
スレッドセーフのSTLクラスは使えるな。
boostのどのライブラリより上では。
boostにこんなのないだろ。

125 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 15:45:26 ]
ありますがな・・・

126 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 15:46:17 ]
ありませんがな・・・

127 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 15:50:33 ]
TBBの日本語サンプルサイトつくってくれよ。
マルチコア時代で、CPUメーカー製の、フリーのこのライブラリは強力すぎる。
できたら毎日クリックしに行くからさ。

ja.wikipedia.org/wiki/Intel_Threading_Building_Blocks

抜粋

並列処理アルゴリズム
parallel_for ループ間で依存性がない単純なループの並列処理
parallel_reduce 指定した範囲をより小さな範囲に再帰的に分割し並列処理
parallel_scan 並列プリフィックスを計算
parallel_while 不明領域、動的領域変更を伴う独立したループ操作
parallel_sort 並列処理でソートを行う
pipeline パイプライン処理

コンテナクラス
concurrent_hash_map STLのmapクラスをスレッドセーフにしたもの
concurrent_queue STLのqueueクラスをスレッドセーフにしたもの
concurrent_vector STLのvectorクラスをスレッドセーフにしたもの

128 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 16:13:42 ]
サンプルはないけど日本語リファレンスあるし間に合ってる感じ

129 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 18:53:08 ]
もうひとつだけ例を見てみましょう。
static LONG flag;
if (flag == FALSE) {
flag = TRUE;
...
flag = FALSE;
}



このコードがまずいことはもうお分かりですね。 NT にはフラグのチェックとセットをアトミックに行える InterlockedCompareExchange がありますから、そちらを使いましょう。
if (InterlockedCompareExchange(&flag, TRUE, FALSE) == FALSE) {
...
InterlockedExchange(&flag, FALSE);
}

hp.vector.co.jp/authors/VA000092/win32/standard-coding.html

130 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 18:58:30 ]


8スレッド
InterlockedIncrement 4.398sec
InterlockedCompareExchange 4.460sec
CriticalSection 6.297sec
d.hatena.ne.jp/streakeagle/20090205/1233833511

VC++ CriticalSectionの速度
何もないループが、0.515106秒に対しクリティカルセクションでは7.089556秒となった。
www.cycleof5th.com/tips/index.php?date=2007-05-30/3


同期オブジェクトの要約
速度
クリティカル セクション 高
ミューテックス 低
セマフォ 低
イベント 低
メータード セクション 高
msdn.microsoft.com/ja-jp/library/cc429052.aspx



131 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 19:08:05 ]
スレッドセーフなキューを複数個用意してキューにデータ来たら、
それぞれ直列に動作する関数を動かしたいんだけど
作業が終わったらキューを観察に行くけど無かった場合、次に入ってくるまで
どうやってまてばいいんだ? ひとつとしてビジーループはあるが。
それなら別変数用意してロック掛けた方が良い。ロック無しで出来る?
キューは一カ所にしてすべての処理関数スレッドで共有する方が無駄ないか。

132 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 19:22:53 ]
キューに挿入する側が、余りのスレッドを監視して空いてたら処理させればいいか。
これならロック無しでアトミック命令だけでいけそう。

133 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 19:24:54 ]
しかしスレッドを生成するコストも馬鹿にならないから
スレッドの生成・消滅はせず、恥に生成したやつを使い回したいところ。
やっぱロックいるか。処理終了してキュー待ちのロック。



134 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 19:27:47 ]
スレッドの生成は恥

135 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 19:41:16 ]
wait付きのビジーループでいいか

136 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 20:32:25 ]
C++でコルーチンってできないの?

137 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 20:32:53 ]
boostにあるにょ

138 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 20:35:08 ]
あるんだ
boostまじ何でもあるな
奴らはいったい誰と戦ってるんだ

139 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 20:37:11 ]
言われてみるとその言葉かなりしっくりくるよな。
C++の最適化に伴う変態記法なんて禿に親を殺されでもしない限りできないし。

140 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 20:39:02 ]
>>138
部品の足りない世界じゃないの?

というかWTLもC#並に充実させてください

141 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 20:45:06 ]
駆動系の部品はハイスペックだが
シートもハンドルもなく部品丸出しの車

142 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 20:47:45 ]
C++はC++です車ではありません
好い加減な比喩は滑稽なのでやめてください

143 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 20:48:41 ]
コルーチン
ttp://ja.wikipedia.org/wiki/%E3%82%B3%E3%83%AB%E3%83%BC%E3%83%81%E3%83%B3

Boost C++の何て言うライブラリで出来るのですか?



144 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 20:49:43 ]
boost.cotoutine
vaultにあるにょ

145 名前:デフォルトの名無しさん [2010/02/17(水) 20:52:04 ]
>>141
部品丸出しな上
自己責任で組み替え自由な仕様だな。

146 名前:デフォルトの名無しさん [2010/02/17(水) 20:52:32 ]
>>141
部品丸出しな上
自己責任で組み替え自由な仕様だな。

147 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 20:52:41 ]
>>141
部品丸出しな上
自己責任で組み替え自由な仕様だな。

148 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 20:53:21 ]
車への例えがどれも的外れでワロスw

149 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 20:53:33 ]
>>141
部品丸出しな上
自己責任で組み替え自由な仕様だな。

150 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 20:55:48 ]
だからといってヨソの車がそんなに安全かというと……

151 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 20:57:31 ]
>>144
valtですか。
ありがとうございます。


152 名前:デフォルトの名無しさん [2010/02/17(水) 20:58:22 ]
Boost.Coroutine
ttp://hamigaki.sourceforge.jp/doc/html/coroutine.html

2009-12-12 - melpon日記 - C++すら(ry
Boost][C++]Boost.勉強会の資料
ttp://d.hatena.ne.jp/melpon/20091212
ttp://melt.sytes.net/data/Boost.Coroutine.ppt
・Boost.Fiber という対抗馬も最近出てきた


153 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 20:59:10 ]
理想的には部品丸出しではないが、
バカが作ると部品を理解していなければならなくなる
仕様だな。




154 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 21:06:26 ]
マルチスレッドキューでロックしないサンプルできた。読み込むに失敗・キューがないときにwaitはいれたが。

#include "include/tbb/concurrent_queue.h"
#pragma comment (lib, "tbb.lib")
#include <process.h>
#include <windows.h>
#include <iostream>
using namespace std;
using namespace tbb;


concurrent_queue<int> que;
int s[2]={0,0};

unsigned WINAPI fnc(void *n) {
int x,num=(int)n;
while(1) {
if( !que.try_pop(x) ) { Sleep(100); continue; }
if(x==-1)return 0;
s[num]+=x; }
}


int main() {
HANDLE hd[2];
int n;
for(n=0; n<2; n++) hd[n]=(HANDLE)_beginthreadex(NULL, 0, fnc,NULL, n ,NULL);
for(n=0; n<=1000; n++) que.push(n);
que.push(-1); que.push(-1);
WaitForMultipleObjects(2, hd, TRUE, INFINITE);
cout<< s[0]+s[1]<<endl;
getchar(); }

155 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 21:08:51 ]
0から1000まで足すだけ。キューへマルチスレッドでpush、popして
読み取って空いてるスレッドが足し合わせていくサンプル。
答えは合ってたよ。

156 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 21:10:28 ]
キューではロックしているだろうがな。そこを自作せずに済んだという話だ。

157 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 21:20:49 ]
プログラム組んでて
returnって打ったつもりだったら

tryit,

って打ってた
なんか感動した

158 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 21:21:46 ]
rをtにずらして打ってみると・・・!?

159 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 21:22:04 ]
ゴルゴはtrycatchfinallyを0.5秒でタイプするらしい

160 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 21:23:35 ]
>>157
夢を感じた

161 名前:デフォルトの名無しさん [2010/02/17(水) 21:33:09 ]
HDL ではごく普通というか大前提の話なんだが
直列処理という枠に凝り固まった頭で見ると驚きの連続なんだろうな

162 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 21:39:17 ]
任意の整数を返す関数が、失敗も正常フローだった場合に
すっきりするエラー通知の仕方はある?

163 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 21:40:28 ]
任意の整数を返す関数が、失敗も正常フローだった場合に
すっきりするエラー通知の仕方はある?



164 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 21:42:11 ]
任意の整数を返す関数が、失敗も正常フローだった場合に
すっきりするエラー通知の仕方はある?

165 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 21:45:58 ]
任意の整数を返す関数が、失敗も正常フローだった場合に
すっきりするエラー通知の仕方はある?

166 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 21:46:42 ]
パラメータになんか持たせるとか

167 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 21:57:56 ]
なにを?

168 名前: ◆GWRSHcLrd6 mailto:sage [2010/02/17(水) 22:01:15 ]
_beginthreadとCreateThreadは何が違うんですか?
というかどっちを使った方がいいんですか?

169 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 22:07:13 ]
>>167
判断できる情報を

>>168
適材適所。常にどちらかがよいということはない

170 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 22:11:21 ]
C++の配列サイズ指定で変数は使えることもあるんでしょうか?それともコンパイラ依存でしょうか?
MinGWで下をコンパイルは正常にでき(Warningも出ない)、arrayのsizeofは32byteとなってちゃんと確保されているようです。

#include <iostream>
using namespace std;
int main() {
int num = 3 + 5;
int array[num];
for (int i = 0; i < num; i++) {
array[i] = i;
}
cout << sizeof array << endl;
}


171 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 22:12:44 ]
正確にはC++ではなくC99で使える様になったはず

172 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 22:18:32 ]
>>170
gccの独自拡張

173 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 22:25:20 ]
>>168
CreateThreadはWindowsAPI、_beginthreadはCランタイム。

CreateThreadで生成したスレッドでCランタイム関数を使うとExitThreadしたときにわずかだがメモリリークが発生するため、
MSはそのような場合には_beginthreadを使うように推奨している。




174 名前: ◆GWRSHcLrd6 mailto:sage [2010/02/17(水) 22:32:21 ]
なるほど。
参考になりました。

unix - windows 互換のスレッド関係の関数は無いんですかね・・・

175 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 22:38:29 ]
Cランタイムって何?






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<218KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef