アカウント名:
パスワード:
機能は解明されていないってこと?
// なぜだかわからないが消すと動かない
というコメントみたいだ。
実際にこういうプログラムに陥った事があるんだけど、理由はマルチコアCPUとスレッドプログラミングの問題で、排他処理がうまく行ってなくて、タイミングによって発生したりしなかったり.....という状態だったかな。
この状況が発生したのは、CPUのシングルコア->マルチコア移行期で、シングルコアCPUなら全然問題ないんだけど、マルチコアCPUだと不具合を起こす......ってな感じだったよ。で、不要なプログラムなんだけど、そのプログラムがあるお陰で別スレッドで処理しているデータ処理の終了と、現在動作しているスレッドのタイミングが合って正常に動作するけど、消すとタイミングが変わって不具合が発生してたよ。こういう場合、たいていはSleep入れると動いたらしく、当時の担当者はSleep多用してたたけど、何か修正するとタイミングがズレて不具合発生したりするんで、オレが引き継いだ時は大変だったよ。そんな事があったから、オレはちゃんと他のスレッドで処理中か.....って確認するように修正したけどね。
その頃からセマフォとかmutexはWindowsにもU*ix系のOSにもあったような…(;´Д`)最低でもU*ix系だとプロセス間の排他ロックの機構ももってましたし(Windows方面は知らないけど多分ある)…なので、Sleep云々というバッドノウハウで何とかするより、他の開発者と話をしてジョブスレッドとは関係ないところのスレッドでセマフォ設定してそこを取ってからデータ実体を叩いて貰いに行くように直してもらうのが王道だったのでは(;´Д`)
よく読めよ。
> 当時の担当者はSleep多用してたたけど、> 何か修正するとタイミングがズレて不具合発生したりするんで、オレが引き継いだ時は大変だったよ。> そんな事があったから、オレはちゃんと他のスレッドで処理中か.....って確認するように修正したけどね。
それだと、単純ループの中のフラグでチェックするのもありになって、厄介ですよね。排他が不確実でもとりあえず動きますから。
なので最低限の問題解決にはなりますけど、複数のタスクを廻す物としてはあまりよろしくない。たのむからmutexとか使って排他を確実にやるようにしてー(><)と他の人達にお願いするのが必要でしょうと。
まあ適材適所でしょう。腕の悪いのがよく考えずmutexとかセマフォとかに頼るといとも簡単にデッドロック引き起こしてくれたり、不必要なグローバルロックでスループット落としてくれたり。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
未知のハックに一心不乱に取り組んだ結果、私は自然の法則を変えてしまった -- あるハッカー
必要であるにもかかわらず (スコア:5, おもしろおかしい)
機能は解明されていないってこと?
というコメントみたいだ。
Re: (スコア:2, 参考になる)
実際にこういうプログラムに陥った事があるんだけど、
理由はマルチコアCPUとスレッドプログラミングの問題で、
排他処理がうまく行ってなくて、タイミングによって発生したりしなかったり.....
という状態だったかな。
この状況が発生したのは、CPUのシングルコア->マルチコア移行期で、シングルコアCPUなら全然問題ないんだけど、
マルチコアCPUだと不具合を起こす......ってな感じだったよ。
で、不要なプログラムなんだけど、そのプログラムがあるお陰で別スレッドで処理しているデータ処理の終了と、
現在動作しているスレッドのタイミングが合って正常に動作するけど、消すとタイミングが変わって不具合が発生してたよ。
こういう場合、たいていはSleep入れると動いたらしく、当時の担当者はSleep多用してたたけど、
何か修正するとタイミングがズレて不具合発生したりするんで、オレが引き継いだ時は大変だったよ。
そんな事があったから、オレはちゃんと他のスレッドで処理中か.....って確認するように修正したけどね。
Re: (スコア:1)
その頃からセマフォとかmutexはWindowsにもU*ix系のOSにもあったような…(;´Д`)
最低でもU*ix系だとプロセス間の排他ロックの機構ももってましたし(Windows方面は知らないけど多分ある)…
なので、Sleep云々というバッドノウハウで何とかするより、他の開発者と話をしてジョブスレッドとは関係ないところのスレッドでセマフォ設定してそこを取ってからデータ実体を叩いて貰いに行くように直してもらうのが王道だったのでは(;´Д`)
Re:必要であるにもかかわらず (スコア:0)
よく読めよ。
> 当時の担当者はSleep多用してたたけど、
> 何か修正するとタイミングがズレて不具合発生したりするんで、オレが引き継いだ時は大変だったよ。
> そんな事があったから、オレはちゃんと他のスレッドで処理中か.....って確認するように修正したけどね。
Re:必要であるにもかかわらず (スコア:1)
それだと、単純ループの中のフラグでチェックするのもありになって、厄介ですよね。排他が不確実でもとりあえず動きますから。
なので最低限の問題解決にはなりますけど、複数のタスクを廻す物としてはあまりよろしくない。
たのむからmutexとか使って排他を確実にやるようにしてー(><)と他の人達にお願いするのが必要でしょうと。
Re: (スコア:0)
まあ適材適所でしょう。
腕の悪いのがよく考えずmutexとかセマフォとかに頼ると
いとも簡単にデッドロック引き起こしてくれたり、
不必要なグローバルロックでスループット落としてくれたり。