[過去ログ]
関数型プログラミング言語Haskell Part33 (1002レス)
関数型プログラミング言語Haskell Part33 http://mevius.5ch.net/test/read.cgi/tech/1581326256/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
911: デフォルトの名無しさん [sage] 2021/09/27(月) 18:11:25 ID:XYchXu+H >>910 mutable stateの排他制御をしてないから複数のスレッドで実行するとまずいことが起こるかもしれない、ってことじゃないの? 排他制御 https://ja.wikipedia.org/wiki/%E6%8E%92%E4%BB%96%E5%88%B6%E5%BE%A1 http://mevius.5ch.net/test/read.cgi/tech/1581326256/911
916: デフォルトの名無しさん [sage] 2021/09/30(木) 09:22:48 >>911 具体的にどういうケースでどういう問題が起こるか解らないので、取り敢えずドキュメントにスレッド間で共有はやめろとある以上、大人しく従うことにします >>912 STM版が、3950Xエコモードシングル500分の処理が30スレッド割り当てで220分くらいになりましたが CPU使用率も75%前後で残念でした 競合するリソースが多過ぎたからではと思い、競合を避ける事を考えていると そもそもSTMを使わず、スレッド毎にローカルにデータを貯めて処理して最後に各スレッドで部分的に仕上げたデータをChanで流して 、受信した側でデータを総括する、初歩的な方式を思いついたので書き換えました getChanContentsを使いましたが、EOFみたいな最後の通知方法が判らずに、全スレッドの処理が終わりもう誰もデータを流すことのないチャネルから性懲りもなく読みだそうとしてしまい 例外が発生して困っていました 幸いスレッドの数は判っているのでチャネルからtakeする数をスレッド数ちょっきりとして切り上げた所、遅延評価が幸いしてその先を読もうとしなくなり例外は発生しなくなりました(本質的解決かは判りません) これにより処理が18分で終わりました スレッド毎にcreateSystemRandomするように書き換えると21分かかるようになりました オーバヘッド込みでも500分かかっていた時代から驚異的な進化を遂げました 憧れだった Software Transactional Memory は期待程速くなくがっかりしました STMは最初に検討するべきではなく、巧く競合が発生しないように書けないときの最後の手段なのかなと思いました http://mevius.5ch.net/test/read.cgi/tech/1581326256/916
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.037s