- 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/
- 44 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 23:04:19 ]
- >>42
最速の固定長の小メモリブロックアロケータは simple segregated storage だとわかりきっている。 探索しないでいい。
- 45 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 23:36:17 ]
- ヒープメモリーにヒープ構造を!w
- 46 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 23:50:34 ]
- boost::shared_ptrにもメモリプールを使うオプションがあったような
- 47 名前: ◆GWRSHcLrd6 mailto:sage [2010/02/14(日) 23:54:13 ]
- >>43
inner_ptrの方でゼロ初期化され、新たなアロケートで再利用されます。 というかカウント0のものはゴミとみなして新しくAllocした時にそれを使います。 で、ブロックが空、なおかつ、ブロックを多く確保しすぎている場合は そのブロックはdeleteされて前後のブロックをリストで繋ぎます。 >>45 そうなんですよw
- 48 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 23:59:54 ]
- じぶんに考え。
N 十分大 char* p[0]・・・p[N] メモリブロック メモリの使用状態を1ビットで表す 00011100010101000000 連続領域が必要なら0の連続を選択。 はじめはp[i]はNULLにしておく。
- 49 名前: ◆GWRSHcLrd6 mailto:sage [2010/02/15(月) 00:00:16 ]
- 2つアロケート ↓
0001 ABCD 1234 5678, 0001 4321 DEDE 5678 ~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~ 解放 ↓ 0000 0000 0000 0000, 0001 4321 DEDE 5678 ~~~~~~~~~~~~~~~~~~~ アロケート(再利用) ↓ 0001 0123 2567 ABAB, 0001 4321 DEDE 5678 ~~~~~~~~~~~~~~~~~~~ アロケート(ブロック追加) ↓ ブロック2をnew 0001 0123 2567 ABAB, 0001 4321 DEDE 5678 0001 0CCC 1224 5555, 0000 0000 0000 0000 ~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~ 解放 ↓ 0001 0123 2567 ABAB, 0001 4321 DEDE 5678 0000 0000 0000 0000, 0000 0000 0000 0000 ~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~ 不必要と判断、ブロック2をdelete 0001 0123 2567 ABAB, 0001 4321 DEDE 5678
- 50 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 00:00:37 ]
- >>47
いったい何を目指しているの? メモリブロック確保の速度なんて operator new の実装に任せておけばいいこと。 そんなところをがんばるよりも、他にすることは無いの?
- 51 名前: ◆GWRSHcLrd6 mailto:sage [2010/02/15(月) 00:01:08 ]
- って感じです。
- 52 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 00:02:15 ]
- カオス
- 53 名前: ◆GWRSHcLrd6 mailto:sage [2010/02/15(月) 00:02:56 ]
- >>50
すいません。高速化しようと思って少しそれてしまいました・・・
- 54 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 00:03:49 ]
- マルチスレッドでメモリ探索にロック掛けると速度落ちると思うから
キューに入れて順番に処理すると良い思うが、キューへのアクセスにロックが必要 ロック無しにする方法ないか。
- 55 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 00:05:52 ]
- wait-free lock-freeのwikiみると、アトミック命令使えばロック無しのマルチスレッドできるらしいが。
- 56 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 00:07:06 ]
- operator new よりGoogleメモリ管理の方が高性能。
- 57 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 00:08:51 ]
- >>54 www.google.co.jp/search?q=lock+free+queue
- 58 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 00:09:43 ]
- >>56
なら operator new を Google メモリ管理で置き換えればいいじゃない。
- 59 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 00:23:34 ]
- >>57
実装方法わからん。cas命令らしいけど
- 60 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 00:46:42 ]
- マルチコア時代のLock-free入門
www.slideboom.com/presentations/133166 これによると std::shared_ptr (C++0x) はとてつもなく遅くて使えんとあるな。 だから Hazard ポインタを使えともある。
- 61 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 01:01:25 ]
- >>60
スマートポインタでLock-freeにするには? という話なのに、 Lock-freeを実現するために使用するスマートポインタの話をするのは順番が逆でしょう。 でも >>60 のような用途に使える軽快なスマポは確かに欲しいけど。
- 62 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 01:14:46 ]
- CAS命令は結構コストかかるのよ。
可能なら、RCU的な手法にする方が良い。 www.atmarkit.co.jp/flinux/rensai/watch2010/watch01b.html みたいな記事もある。
- 63 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 23:47:17 ]
- RCUってなあに?
- 64 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 23:48:21 ]
- 正直
マルチコア時代 を相手にするならスマポのコストが問題となることは 大抵ないと思うんだが。
- 65 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 23:49:25 ]
- >>63
記事の中よめよ リンク先にまるなげだけどちゃんとあるだろう ja.wikipedia.org/wiki/%E3%83%AA%E3%83%BC%E3%83%89%E3%83%BB%E3%82%B3%E3%83%94%E3%83%BC%E3%83%BB%E3%82%A2%E3%83%83%E3%83%97%E3%83%87%E3%83%BC%E3%83%88
- 66 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 23:55:18 ]
- で、依存無しのCASとかRCUとかはどう実装するんだ?
- 67 名前:デフォルトの名無しさん mailto:sage [2010/02/16(火) 00:06:35 ]
- 無理無理
- 68 名前:デフォルトの名無しさん mailto:sage [2010/02/16(火) 00:59:05 ]
- >>64
マルチコア関係なくね?
- 69 名前:デフォルトの名無しさん mailto:sage [2010/02/16(火) 01:48:54 ]
- >>64
おい!
- 70 名前:デフォルトの名無しさん mailto:sage [2010/02/16(火) 08:04:43 ]
- 通信系の処理プログラムを書いてるんですが
処理担当スレッドを作る場合、必要になったらbeginthread(もしくはbeginthreadex)で スレッドを起動して作業が終わったらおしまいとするのとスレッドプールをするのでは どちらがいいのでしょうか?
- 71 名前:デフォルトの名無しさん mailto:sage [2010/02/16(火) 13:05:40 ]
- >>70
頻繁に起動終了を繰り返すようなものならスレッドプールが良いと思うよ。 スレッドの生成破棄もコストはあるからね。
- 72 名前:デフォルトの名無しさん mailto:sage [2010/02/16(火) 15:32:45 ]
- getter/setterについて悩んでいます。
●getterについて ・setterに対してgetterも用意されていたら、隠蔽になっていないのではないか? ・利用者がsetした時の情報を保持すればgetterはいらないのではないか? ●setterについて ・コンストラクタの引数で受け取る物は、setterも用意したくなるが同じ機能を2箇所に書いている感が? 書いたクラスが各メンバ変数に対してgetter/setterが存在する物になっていると、 無駄に手間をかけただけの構造体なんじゃないかと不安になります。 必要十分なgetter/setterを持つクラスを設計するには、どういう事を考えればいいのでしょうか?
- 73 名前:デフォルトの名無しさん mailto:sage [2010/02/16(火) 15:45:03 ]
- >>72
>・setterに対してgetterも用意されていたら、隠蔽になっていないのではないか? なんでそうなる 他にもいろんなprivate変数持ってる場合がほとんどだろ
- 74 名前:デフォルトの名無しさん mailto:sage [2010/02/16(火) 15:54:44 ]
- >>73
「コンストラクタも含めて外部からget/setされないメンバ変数」を持たないクラスも多いです。 10個近くの設定値が必要なクラスとか、コードのうちgetter/setterが占める割合が多くなって、「なんだかなー」と思います。
- 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にあるにょ
|

|