- 1 名前:デフォルトの名無しさん [2010/05/16(日) 23:13:52 ]
- (#゚ー゚)つ < C#、.NETの話題はこちらでどうぞ。
前スレ C#, C♯, C#相談室 Part58 pc12.2ch.net/test/read.cgi/tech/1269261310/ Visual C# 2008 Express Edition 日本語版 www.microsoft.com/japan/msdn/vstudio/express/vcsharp/ その他テンプレ>>1-5くらい
- 504 名前:デフォルトの名無しさん mailto:sage [2010/06/15(火) 21:08:21 ]
- そういうことじゃないだろ。
- 505 名前:デフォルトの名無しさん mailto:sage [2010/06/15(火) 21:18:56 ]
- ほう
- 506 名前:デフォルトの名無しさん mailto:sage [2010/06/15(火) 21:49:26 ]
- >>502はプロデューサーコンシューマーに限った話はしてないよね。
- 507 名前:デフォルトの名無しさん mailto:sage [2010/06/15(火) 22:04:20 ]
- そんなMSの俺様クラス作られても、いつサポートされなくなるか分からないしな。
- 508 名前:デフォルトの名無しさん mailto:sage [2010/06/15(火) 22:36:19 ]
- しかしまぁ大手のマルチスレッド関連の記事は古いものばかりだな
忙しくなけりゃ俺が寄稿してあげたいぐらいだわ
- 509 名前:デフォルトの名無しさん [2010/06/15(火) 22:37:49 ]
- >>508
ブログにでも書け キーワードさえうまく配置してればそのうち広まるよ
- 510 名前:デフォルトの名無しさん mailto:sage [2010/06/15(火) 22:38:57 ]
- 俺様ライブラリ(車輪の再発明)批判はいいとして、
それがどうして「生のthreadやらthreadpoolやらを使」うことがそれだって言うの? そっちの方が意味がわからんよ。
- 511 名前:デフォルトの名無しさん mailto:sage [2010/06/15(火) 22:46:06 ]
- >>458
んーこのblogなんとなく見てたら気になるとこいっぱいあるな… でももうコメントもできんし。 っていうかだれかすでにコメントしてて消えちまったのかもしれんが。
- 512 名前:デフォルトの名無しさん mailto:sage [2010/06/15(火) 23:52:40 ]
- >>504
.NET4触ってないからよくわからないんだが、Threading.threadは使わずにBackgroundWorker使えって事? それとも.NET4はもっと便利なのがあるってこと?
- 513 名前:デフォルトの名無しさん mailto:sage [2010/06/16(水) 00:06:43 ]
- あるよ
- 514 名前:デフォルトの名無しさん mailto:sage [2010/06/16(水) 00:34:11 ]
- >>512
Task クラスとか、Parallel クラスとかが増えた。
- 515 名前:デフォルトの名無しさん mailto:sage [2010/06/16(水) 06:25:10 ]
- 目的が異なるものを比較する意味がわからん
- 516 名前:デフォルトの名無しさん mailto:sage [2010/06/16(水) 06:41:52 ]
- え?w
- 517 名前:デフォルトの名無しさん mailto:sage [2010/06/16(水) 09:26:18 ]
- は?
- 518 名前:デフォルトの名無しさん mailto:sage [2010/06/16(水) 10:08:53 ]
- あ?w
- 519 名前:デフォルトの名無しさん mailto:sage [2010/06/16(水) 10:10:59 ]
- お?
- 520 名前:デフォルトの名無しさん mailto:sage [2010/06/16(水) 11:26:09 ]
- 並列用のパラレルAPIやParallel Linqで、GUIの非ブロック化処理を書いちゃうわけか。
それはそれでやばげだな。
- 521 名前:デフォルトの名無しさん mailto:sage [2010/06/16(水) 12:30:20 ]
- 誰かいないのか?
それはそれでやばげだなって言ってんだろ!
- 522 名前:デフォルトの名無しさん mailto:sage [2010/06/16(水) 14:07:14 ]
- ふざけんな!
俺がやばげだなつってるんだから反応しやがれ!
- 523 名前:デフォルトの名無しさん mailto:sage [2010/06/16(水) 16:01:52 ]
- だあれもいない(´・ω・`)ショボーン
- 524 名前:デフォルトの名無しさん mailto:sage [2010/06/16(水) 17:36:48 ]
- それはそれでやばげだが、それもありなんじゃないかなって、今はそう思えます。
- 525 名前:デフォルトの名無しさん mailto:sage [2010/06/16(水) 20:29:38 ]
- .net4はキャンセルフレームワークが追加されたのがいいな
これでマルチスレッドを使う人がちゃんとキャンセル実装をするようになればいいが…
- 526 名前:デフォルトの名無しさん mailto:sage [2010/06/16(水) 20:34:27 ]
- 耳毛、鼻毛を笑う。
- 527 名前:デフォルトの名無しさん mailto:sage [2010/06/16(水) 21:27:25 ]
- しかし、そんなスレッドを酷使するような計算量のアプリって書いたことないなぁ。
あると欣喜雀躍する人がいるのは分かるがパンピーなプログラマでそんなもの要るの? ちゃんとプロファイリングしてれば、キャンセルなんて考える必要なんて無いのが経験則。 それとも皆、もしかして物理シミュレーションとか暗号鍵解読とかでもやってるのか?
- 528 名前:デフォルトの名無しさん mailto:sage [2010/06/16(水) 21:32:56 ]
- スレッドを酷使するかどうかとキャンセルを考えるかどうかがなんで同列に並んでんの?
俺の経験からいけばそれらは関係がないんだけど。
- 529 名前:デフォルトの名無しさん mailto:sage [2010/06/16(水) 21:37:11 ]
- いや、長時間じゃなくてもGUIアプリで計算しようとしたら別スレッドにするだろ。
しない?なら言う事は何も無いな。
- 530 名前:デフォルトの名無しさん mailto:sage [2010/06/16(水) 21:38:45 ]
- C#でGUIアプリをつくったらそれを別スレッドで行わないことが困難だろう。
- 531 名前:デフォルトの名無しさん mailto:sage [2010/06/16(水) 21:40:50 ]
- パラレルを活用するのはそれなりに限られてるけど、
タスク系統は普通に使うでしょ。
- 532 名前:デフォルトの名無しさん mailto:hage [2010/06/16(水) 21:45:24 ]
- >>527はどうしようもないバカ
スレッドのキャンセル書けないバカは一生マルチスレッドするな。
- 533 名前:デフォルトの名無しさん mailto:sage [2010/06/16(水) 22:25:39 ]
- こうやってみるといかにマルチスレッドを使いこなしてないかわかるな
まぁちゃんとわかって仕事で使ってる人間なんてほんの一握りなわけだが
- 534 名前:デフォルトの名無しさん mailto:sage [2010/06/16(水) 22:32:55 ]
- むしろよくわからないなら使わない方が良いとは思う。
大抵のビジネスアプリは使わんでも何の問題もない。
- 535 名前:デフォルトの名無しさん mailto:sage [2010/06/16(水) 22:44:38 ]
- 俺はビジネスアプリ作ってるけどかなり多用してるな
とはいえあまり見ないのもたしか UIがフリーズしたり複数のタスクが同時に出来ないアプリが多い事多い事…
- 536 名前:デフォルトの名無しさん mailto:sage [2010/06/16(水) 22:51:31 ]
- 仕事だと危険すぎてやらせる気にならんのだよね。
自分だけで作る部分ならいいんだが。
- 537 名前:デフォルトの名無しさん mailto:sage [2010/06/16(水) 22:51:45 ]
- ぶっちゃけスレッドって難しいじゃん
サンプル程度のものなら簡単に理解できるし実装も簡単だけど いざちゃんとやろうと思ったら同期、同調、排他、例外処理、キャンセル、etc...と糞難しい 設計力も数段上の力が求められるしさー 業務系とかそれが出来ないからモーダルウィンドウに逃げてる人多いじゃんよ
- 538 名前:デフォルトの名無しさん mailto:sage [2010/06/16(水) 23:00:14 ]
- 中級者御用達のクック本。
その中でも最も難易度の高い非同期項目みて”超初心者向けだな”とか思える人が集まらないと実務じゃ無理。
- 539 名前:デフォルトの名無しさん mailto:sage [2010/06/16(水) 23:03:48 ]
- マルチスレッドは怖いです
- 540 名前:デフォルトの名無しさん mailto:sage [2010/06/16(水) 23:04:36 ]
- はいはい
- 541 名前:デフォルトの名無しさん mailto:sage [2010/06/16(水) 23:06:39 ]
- 実際のところ、UI止めたくないから裏でスレッド、くらいにしか使ってない。
- 542 名前:デフォルトの名無しさん mailto:sage [2010/06/16(水) 23:11:53 ]
- GUIの裏で計算だとか通信だとかするならbackgroundworkerでよくね?
MSもこういう用途のために作ったんじゃないのかね 普通の受託開発屋なら通信部分って自前で書かない場合多いし
- 543 名前:デフォルトの名無しさん mailto:sage [2010/06/16(水) 23:12:20 ]
- 低能だからね。
- 544 名前:デフォルトの名無しさん mailto:sage [2010/06/16(水) 23:30:05 ]
- >>542
だってそれ使うと同調しにくいじゃん… スレッドも一本しか使わないし… それ以上にUIにベッタリな仕様だからビジネスロジック部分には不向き 複数のスレッドで別々の処理をやってある時点で非同期に集計してその後にまた別の処理を… なーんてことやると一気に難易度がググーーーンと上がっちゃいます!><
- 545 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 00:05:35 ]
- 出来るならやりゃいいと思うけど
適当に人あつめると出来ない人の方が多いからなあ。 低い方に合わせて作らんと死ぬよね
- 546 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 00:17:18 ]
- UI止めないのは操作感の改良だから、多重の並列処理はできないようにしてるが、
特に客から文句言われた事ないな。 計算が遅けりゃ十中八九はデータの持ち方とかに問題があって遅いから、遅いと 文句言われたら改良する。 文句言われなけい限り、保守とかが楽な方に意図的に流してる。 でもスレッドとか(あと信じられないことにコレクション)をヘルプのサンプル引き写し レベルで使ってるだけで、マニアックだとか難しくて他の人が保守出来ないから チーム作業ではやめてくれないかとか罵倒されて (´・ω・`)。。。(いくらなんでもあんたらが時代遅れだろ) とか思うが相手が大多数なので言えない。 これは俺の勤め先がブラックなんだよな、な?一般的じゃないよな?(マ板行け自分)
- 547 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 00:19:42 ]
- >>544
勝手に上がればーーーーか(´・ω・`)
- 548 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 00:23:53 ]
- >>544
そういう時はほかの方法でやるだろうよ。
- 549 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 00:40:39 ]
- 外資の俺が言うのも何だが未だに国内で組んでるエンジニアはレベルが低いな…
スレッドぐらい使いこなせよ…
- 550 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 00:43:35 ]
- >>549
>スレッドぐらい使いこなせよ レベルの低い会社に勤めてるのですねw
- 551 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 01:00:29 ]
- まあ自称分かってるやつが一番地雷なんだけどな。
- 552 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 01:08:08 ]
- 使いこなせてる俺はいつの間にやら上級PGだったようだ
おまえ等、俺に挨拶は?
- 553 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 01:08:35 ]
- ttp://blogs.msdn.com/b/hiroyuk/archive/2010/05/26/10015338.aspx
なんでvolatileなのに問題が発生するのか説明してみて。
- 554 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 01:15:18 ]
- >>553
説明もなにも二つのスレッドが協調すべきなのにその操作をいれてないからだろ そのブログじゃ同時に実行される云々いってるがスケジューラの指定が無い以上どっちが優先されるのかはプロセッサ任せ つーかロックすらかけてない互いの状態弄って何がしたいのかわけわからん volatileは全く関係ねぇよ ふー、やっぱ俺って天才だわ 上級PGなめんなよ!
- 555 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 01:29:58 ]
- >>554
何を言ってるんだお前は…
- 556 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 01:35:27 ]
- volatileには順序保障の役割がある。
・volatile読み込みより前の書き込みは必ず先に実行される ・volatile書き込みより後の読み込みは必ず後に実行される にも関わらず>>553ではすべての読み書きがvolatileなのに順序問題が起こる。 これはなぜか説明してみろという話。
- 557 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 01:42:14 ]
- いや、
・volatile書き込みより前の書き込みは必ず先に実行される ・volatile読み込みより後の読み込みは必ず後に実行される かな
- 558 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 01:58:43 ]
- だからレジスタ依存=プロセッサに依存するつってんだろー
それを阻止する為に〜やりましょうとかずれてるわけで ちゃんとやるならロックや適切なスケジューラを指定するのが常なんだよ! 上級PGなめんなよ!
- 559 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 02:06:04 ]
- 上級な土方
- 560 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 02:09:16 ]
- まったく何でかが知りたいならO-o-Oでググれや
上級PGなめんな!
- 561 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 02:16:05 ]
- え、volatileに同期処理なんてあるの?初耳だわ。
- 562 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 02:22:54 ]
- 同期じゃねぇよ
ただのコンパイラ最適化防止の為じゃ そして>>553の記事は最適化は防げてもプロセッサの最適化(OoOのね)は防げないから任意でThread.MemoryBarrier()挟んでメモリバリアしろよタコ助共つーこと 上級PGなめんなよ! つーかスレッド使う予備知識の基礎中の基礎だろ!
- 563 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 03:30:13 ]
- >>546
俺もいい言葉を言われたことがあるので伝えておくよ。 「ジェネリクスは信用してないから禁止」
- 564 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 03:57:44 ]
- >>561
C++のvolatileと混同してない?C#のにはあるよ。 ただOoOに対しては有効じゃないのかなぁ。
- 565 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 04:49:42 ]
- 初鼻だわ。
- 566 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 05:59:33 ]
- あのな、スレッド関係で、順序保障の機能ってのはOoOの順序問題とかの解決に使う。
当然、C#のvolatileは順序を保証するために使える。 ではなんで>>553では全部volatileなのに順序問題が発生するのか。
- 567 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 06:14:20 ]
- 参考
ttp://msdn.microsoft.com/ja-jp/magazine/cc546569.aspx#id0030022
- 568 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 06:32:28 ]
- つまり>>551
- 569 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 06:42:49 ]
- 参考
ttps://www.microsoft.com/japan/msdn/msdnmag/issues/05/10/MemoryModels/default.aspx#S3 この辺が詳しいな。
- 570 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 06:56:55 ]
- >>563
デリゲート禁止ってのもあった・・・
- 571 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 08:55:56 ]
- いつからvolatileがOoOの順序保障が行われるようになったのやら
ほんとレベル低いな
- 572 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 10:30:22 ]
- >>563
医者が扱う薬の話かよ
- 573 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 10:51:05 ]
- /ufcpp.net/study/csharp/sp_thread.html
volatileって何だろうと思って凄腕の人の解釈見たらコンパイラの最適化防止ってかいてあるお ゆとりPGをなめんなおっおっ( ^ω^)
- 574 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 13:38:23 ]
- >>573
最適化でその変数がなかったことにされるのを防ぐだけ
- 575 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 13:41:28 ]
- 何のために?
- 576 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 13:43:09 ]
- グローバル変数的に使うために用意した変数が、同ファイル中で手をくわえられてないから最適化で削除されちゃう
とかを防ぐためじゃなかったっけ。
- 577 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 13:43:56 ]
- コンパイラが不要だと思っても、実は他のスレッドが
必要としているかもしれないから。
- 578 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 13:44:31 ]
- volatileは順序保障するとか言ってた奴出てこいw
- 579 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 13:46:14 ]
- あぁ、スレッドであれこれするときに読むんだけど、おまえそのスレッドでその変数変更してねえのになんで読むんだよ
それいらねえだろってコンパイラが言ったら、それは別のスレッドが書き変えてるかもしれないの!って注意してやるんだったか
- 580 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 13:52:45 ]
- C言語のvolatileが想定してたのはSignalなどのCPU割り込み処理で、
スレッドのことは考えてなかった。 よくvolatileをスレッドで使うなというのはこのため。 C#やJavaのようなはじめからスレッドを想定してる言語では意味を拡張していて、 スレッドに対して使えるようになっている。 >>553の他の記事を見たが他のはエラーが起きたときのダイアログやメッセージを イメージでアップしているが、この記事にはない。 おそらく手元の環境でエラーが起きなくて脳内で書いてるんじゃないのかな。 誰かこのプログラムでAssertが起きた人いる?
- 581 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 15:29:45 ]
- 並列化で思い出したが、SIMD対応ってもうやる気無いのかね?
昔はJITの利点の一つとして喧伝してたもんだったが
- 582 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 16:05:48 ]
- 環境に応じてスカラでXMMレジスタを使ってるらしい。
ベクトル化はMono.Simdのようなやり方しかないのだろうか。
- 583 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 17:01:13 ]
- Matrixとか折角あるのに対応してないのかね
つーかアレDirectX由来だっけ?
- 584 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 17:06:53 ]
- もともとMatrixはJpegやMpegの展開のために用意されたんじゃなかったっけ?
これからはマルチメディアの時代だとか言って。 今はビデオの展開はGPUの仕事になっちゃってるからCPUのMatrixはあんまり使ってないような。
- 585 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 17:27:28 ]
- Matrixの主な用途はTransformだと思ってた俺
- 586 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 17:53:49 ]
- >>585
君が正しい
- 587 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 19:44:11 ]
- var hoge = new hogehoge()
「新人がわかんないだろ、意地悪すんなよ」って言われた
- 588 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 19:56:13 ]
- 新人いじめかよ
最低だな
- 589 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 20:02:15 ]
- volatileはメモリの読み書きを最適化して消さないだけ
それ以外は特に何も保証しない
- 590 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 20:07:59 ]
- >>578
ここはでたらめ言うだらけだな。 ttp://msdn.microsoft.com/ja-jp/library/aa645755.aspx ttp://msdn.microsoft.com/ja-jp/library/aa691105.aspx ttp://www.microsoft.com/japan/msdn/msdnmag/issues/05/10/MemoryModels/default.aspx#S3 >>574 ttp://www.microsoft.com/japan/msdn/msdnmag/issues/05/10/MemoryModels/default.aspx#S5 この辺読みゃ分かるが、よく誤解されてるように読み込みそのものが削除されるようなことは普通はない。
- 591 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 20:08:57 ]
- ぜんぜん前の書き込みを読まない奴だな。それはCの話だ。
- 592 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 20:11:32 ]
- >>589
そろそろ痛いから言語仕様でも読んでみな。 >>590の最初のリンクだけでも十分だ。 >>580 >>553のソースでしっかりAsser起こる。 一瞬なんで?って思ったが、まあよく考えてみれば確かに起こってもおかしくはないのかな…って感じ。
- 593 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 20:16:33 ]
- なんかごっちゃになっている奴がいるようだけど、volatile保証するが読み書きの順序と、
複数のスレッドが変数にアクセスする順序は別の問題だから。
- 594 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 20:19:05 ]
- >>593
未だに>>553の意味わかってないだろ。
- 595 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 20:20:35 ]
- いや、微妙だな、わかっていっているようにも読める。
- 596 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 20:22:20 ]
- C#の話だったのか
- 597 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 20:23:49 ]
- スレタイ読んでなかったのか
- 598 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 20:24:10 ]
- >>590
遠まわしな説明でよく解らんな。 メモリバリアの機能を含んでいるどうかだけ書けば1行ですむのに。
- 599 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 20:28:07 ]
- というか、>>553の例はコンパイラが無意味に見える命令を削除しているだけじゃないのか?
- 600 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 20:28:59 ]
- はい?
- 601 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 20:30:50 ]
- volatileは最適化をなくし削除しなくなるんじゃなかったのかよw
- 602 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 20:32:08 ]
- こんな風に分かってるつもりのやつがでたらめなことばっかり言うから、
危なくて使えないんだよ。
- 603 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 20:36:47 ]
- >>598
>メモリバリアの機能を含んでいるどうかだけ書けば1行ですむのに。 メモリバリアの機能を含んでるならなんで>>553はAssert起こって、 明示的にメモリバリア命令入れたら起こらなくなるの? って思うわな普通。 メモリバリアって言っても一言で言えるほど単純な話じゃない。
- 604 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 20:42:36 ]
- volatile は確かに最適化を抑止するんだが、それは一つのスレッド内で変数の参照順を
変更するようなものに限られるんだよ。
|

|