大富豪家2.0の日記
2006年05月07日
15:18
セマフォ
というものを周囲の若者が誰も知らないので最近驚いたのだが、こういうのはもう常識じゃないんだろうか?
コメント
2006年05月07日
15:41
まえG
mutexと言えば通じるんでは?
2006年05月07日
15:42
《Writer Setagaya》
ある意味常識じゃないかもしれません。
PGレベルでセマフォをコントロールさせるのを禁じている現場は少なくありません。
低レベルコントロールは全て隠蔽するのが組み込み現場の傾向です。
一時期、設計書や仕様書に乗っからないセマフォが乱立して、深刻なバグの原因になっていましたし。
2006年05月07日
15:45
咳
一般的な概念としてのセマフォでしょうか?
あるいはSystem V IPCの?
2006年05月07日
15:49
大富豪家2.0
一般的なほうです。言葉を聞いたこともないというのにちょっと驚いたもんで。確かにmutexと言ってしまえばそれまでですね。
2006年05月07日
16:02
i16(愛一郎)@一陽來復
コンピュータがどうして動くのか理解してるプログラマは物凄く少数派だとかそっちをまずどうにかしてくれないと(^^;;
従ってコンピュータの限界もわからなかったりするし。
どう動くか解ったものがマルチプログラミングでどうなっちゃうのかというのが解ってそれをどうにかする仕掛けとして理解しないと意味を成さない。
2006年05月07日
16:23
shinji
Semaphore 自体が、test&set とかdisable interruptとかを抽象化するためのものなのに、低レベルと言われてしまうのか。mutex/critical section よりもレベルが高いことを理解している人は、もしかして、希少? 計数Semaphoreとか、条件付き変数とかはもはや雲の上か? 同期機構は外から隠蔽出来ない(待ち状態を隠すことが出来ない)ってことは誰も教えないのか?
でも、そういう状況があるので、すべてsingle thread + select loop で書くのが良いとは思ってます。
そういえば、この間、仕事でconditonal waitを使った時は仕様書には書きませんでした。ごめんなさい。C++ の文字列操作が、Thread safe でない環境だったんで、苦労したっけ...
2006年05月07日
16:25
しゅんすけ
少なくとも僕らの頃では授業で扱っていたようです.
#伝聞なのは,僕はその特定の授業はサボったので
BSD Socket なる単語を知らない人も多いかもしれませんね.
2006年05月07日
16:49
《Writer Setagaya》
低レベル処理はデバイス寄りの処理のことを指します。
程度の低い高いという問題じゃないです。
2006年05月07日
17:00
i16(愛一郎)@一陽來復
下のほうがないと普通に砂上の楼閣が築かれますよね。
2006年05月07日
17:14
まえG
何がプリミティブかってのは、好き好きで、セマフォでもtest&setでもcompare&swapでもモニタでもLL/SCでもメッセージパッシングでも良いんだけど、セマフォは「並行プログラミングのgo to文」と呼ばれるくらい扱いにくい低水準なものだから、直接使うことはもう少ないでしょうね。まあmutexも、ほとんどバイナリ・セマフォ+αだけど。
そうすると、歴史に興味があるわけじゃない普通のプログラマは、よく使う排他構文だけ知るようになるのかも。
普通のアプリに関係ない、歴史的意義しかないような概念ってどのくらい知ってるべきなんでしょうね。デッカーのアルゴリズムとか。FORTRANの算術IFとか。コルーチンとか。