トップページ > プログラム > 2017年03月24日 > RtKD05ZR

書き込み順位&時間帯一覧

5 位/238 ID中時間01234567891011121314151617181920212223Total
書き込み数1000000000000000000140208



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん
C#, C♯, C#相談室 Part92 [無断転載禁止]©2ch.net

書き込みレス一覧

C#, C♯, C#相談室 Part92 [無断転載禁止]©2ch.net
635 :デフォルトの名無しさん[sage]:2017/03/24(金) 00:50:30.06 ID:RtKD05ZR
>>630
俺は622じゃないけど。

従来型のロック機構だとコストが高すぎる場合もあるんだよ。
俺は詳しくないけど、多分Erlangとかの世界で。
mutex等は共有メモリへの書き込みが生じるから実はかなり重い。
C#, C♯, C#相談室 Part92 [無断転載禁止]©2ch.net
650 :デフォルトの名無しさん[sage]:2017/03/24(金) 19:42:33.91 ID:RtKD05ZR
>>640
> 結局ロックが必要
いや、要らん。正確には、要らない組み方はある。
アトミックはデータを構造体にして参照を持つことで解決出来る。(一発ライト)
レーシングはインミュータブルとCASで解決出来る。x86ならCMPXCHG命令。

具体的には以下。
1. まず有効な値かどうかを先に判定する。(これは今も先にやっているはず)
2. 書き換える場合、元データのポインタをローカルにまず確保する。
3. 上記旧ポインタから参照して、書き込むデータを
new ProgressBarData() で新しく作る。(インミュータブル)
4. 本体のポインタをCAS命令(LOCK付き)で差し替える。
5. 失敗した場合は3からリトライする。(CAS命令の結果に最新ポインタが入っている)

この方法だとメモリを余分に食うけど、ロックは要らなくなる。
(なおErlangは共有メモリ無しで全て通信という別解決方法だった)

いずれにしても、やりようはあるんだよ。どこにコストを掛けるかという話で。
そもそもGUIなんてレーシングしても問題ないようにも組めるし。
(ProgressBar.value += なんて要らない。 = だけでも組める。>>646に同意)
その上で、invokeなんてユーザーに見せる必要あったのか?というのが疑問。
.NETはVC++でも使うから少しでも速い方がいいという需要もあるのかもしれんが、
C#のノリならここは隠蔽して欲しいところでしょ。GUIなんて極限まで速い意味はないし。
ラップしてもいいし、上記のようにロックフリーにしてもいい。
(もちろんユーザがやってもいいんだが、そういう言語じゃないでしょ)

https://ja.wikipedia.org/wiki/%E3%82%B3%E3%83%B3%E3%83%9A%E3%82%A2%E3%83%BB%E3%82%A2%E3%83%B3%E3%83%89%E3%83%BB%E3%82%B9%E3%83%AF%E3%83%83%E3%83%97
https://ja.wikipedia.org/wiki/Lock-free%E3%81%A8Wait-free%E3%82%A2%E3%83%AB%E3%82%B4%E3%83%AA%E3%82%BA%E3%83%A0
つかいつからお前らこんなに馬鹿になったんだ?ふらっとから混ざったのか?
ロックの設計の仕方を知らないのはお前ら全員じゃねーかよ。
C#, C♯, C#相談室 Part92 [無断転載禁止]©2ch.net
654 :デフォルトの名無しさん[sage]:2017/03/24(金) 20:07:48.70 ID:RtKD05ZR
>>651
お前がinvokeをウザイと思わなければそれでいい。
俺はinvokeをウザイと思うからMSが隠蔽しとけ、と思う。
多分後者の方が多いだろ、この件に関しては。

>>652
ついにC#がGC言語だと知らない奴も出てきたか、、、

>>653
MSはこの程度ならきっちり実装出来るよ。
というかMSって比較的まともだと思うぞ。
C#, C♯, C#相談室 Part92 [無断転載禁止]©2ch.net
656 :デフォルトの名無しさん[sage]:2017/03/24(金) 20:15:53.11 ID:RtKD05ZR
というかここでも単発は池沼なんだな。
いちいち言ってることがアレだし。
C#, C♯, C#相談室 Part92 [無断転載禁止]©2ch.net
657 :デフォルトの名無しさん[sage]:2017/03/24(金) 20:24:26.17 ID:RtKD05ZR
つかまあ、百歩譲って他のコントロールならいいよ。
ただ、ProgressBarなんてどう考えてもタスクスレッドから書き換えられるのが仕様だろ。
(むしろUIスレッドから書き換えることがない)
それをいちいちinvokeはねーだろ。

せめてProgressBarだけでも対応しとけよと思うだろ普通。
C#, C♯, C#相談室 Part92 [無断転載禁止]©2ch.net
659 :デフォルトの名無しさん[sage]:2017/03/24(金) 20:32:42.95 ID:RtKD05ZR
皆さん、今からスレッドセーフ大先生の講義が始まります。ご静聴下さい。
ではよろしく>>658
C#, C♯, C#相談室 Part92 [無断転載禁止]©2ch.net
663 :デフォルトの名無しさん[sage]:2017/03/24(金) 22:13:22.45 ID:RtKD05ZR
つまり、俺が言いたいのは、以下ね。

>>559 > invokeってフォームに限ってどうして必要なのですか?
老害: それがしきたり。
ゆとり池沼連呼リアン>>658: スレッドセーフ!スレッドセーフ!
俺: MSが馬鹿だから。

ゆとりって連呼リアン程度の知能しかないよなマジで。
そもそも俺の>>650は>>589(俺ではない)とほぼ同じ内容だぞ。
お前ら馬鹿が付いて来れてないから書き直しただけでね。
お前らが589を最初から理解していればもっとマシな議論だったろうさ。
C#, C♯, C#相談室 Part92 [無断転載禁止]©2ch.net
666 :デフォルトの名無しさん[sage]:2017/03/24(金) 22:41:45.59 ID:RtKD05ZR
スレッドセーフ君はやはり連呼リアンであったか、、、
お前がそう思うんなら(ry


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。