パスワードを忘れた? アカウント作成
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。

Java 19搭載予定の新機能「Virtual Thread(仮想スレッド)」」記事へのコメント

  • by Anonymous Coward on 2022年09月01日 15時03分 (#4316871)

    カーネルスレッドを利用せずOS資源的には1スレッド内で複数のコード/スタックを自前でスケジューリングするとかじゃないですよね?
    タスクスイッチやOS資源的には軽くなるけどマルチコアが活かせないし工夫しないとブロッキングI/Oで全部止まっちゃう古式ゆかしい実装ですが

    • by Anonymous Coward

      > カーネルスレッドを利用せずOS資源的には1スレッド内で複数のコード/スタックを自前でスケジューリングするとかじゃないですよね?
      それじゃないの?
      unix系ならsetcontextとか、windowsならfiberとか昔からあるやつ。
      言語使用で対応しましたということでは?

    • by Anonymous Coward

      カーネルスレッドとかネイティブスレッドってキーワードを知ってる老人から見ると、何を今更って話ですね。 んなもん setjump() と longjump() 使えばC言語でも実装できるわ!rubyなんて当初からそうやって実装されてるわ!余計な機能入れるな!などなど言いたいことは沢山あるでしょう。

      違うんですよ。

      最近はコルーチンとかが流行ってい

      • by Anonymous Coward

        コルーチンってそれこそC言語しかなかった時代にはもうあった言葉では…

        • by Anonymous Coward on 2022年09月01日 16時38分 (#4316956)

          コルーチンは、プアマンズスレッドみたいな扱いされてたことがあるけど、ここ5年か10年くらいで、コルーチンであることが見直されて流行り出してるんですよ。
          ラムダとかと一緒。
          概念や実装そのものは、80年代とか70年代とかに出てるけど、最近になって見直されてる。

          # なんかソフトウェア業界の流行り廃りは間隔が早いって言われるが、言語仕様の流行りだと5年、10年単位だな。

          親コメント
          • by Anonymous Coward

            更に時代はめぐってselect,pollが流行の最先端に

            • by Anonymous Coward

              スマホも出てきてしばらくしてから「マルチタスクに対応した!」とか言ってたしな

              • by Anonymous Coward

                Windowsのストアアプリも出てきてしばらくしてから「マルチウィンドウに対応した!」とか言ってたしな。

          • by Anonymous Coward

            当初は割に合わなかったものも現代では誤差にしかならんからおk
            みたいなのもあるんじゃないかな

        • by Anonymous Coward

          Cより古い。(1963)

      • by Anonymous Coward

        コルーチンはyieldの前後で実行するスレッドが変わることがあるので、
        STAなCOMと一緒に使うとドはまりするので要注意ですね。

        • by Anonymous Coward

          そんな(マイナーではないけど)一部の実装に限ったことを…

        • by Anonymous Coward

          Thread Local Storageもな

        • by Anonymous Coward

          Fiber実装になってないの?

          • by Anonymous Coward

            fiber的にすることで、あえてスレッドを乗り換えることができる実装がある。
            UIスレッドは止めちゃダメなフレームワークなとき、ソース上の区切りのいいところからワーカスレッドにきれいに移れる。
            そういう目的・仕組みを理解して使ってねってこと。

        • by Anonymous Coward

          GILが邪魔なのでスレッドはあんま使いません

        • by Anonymous Coward

          WindowsのFiber以外で実行するスレッドが変わる実装なんてあるか?

      • by Anonymous Coward

        昔、コルーチンをsetjump/longjumpで無理矢理実装して、嵌った老人が来ましたよっと。
        setjumpは実装によって、全部のレジスタが保存されるとは限らないのよね。
        あと、スタックをOSの想定していない場所に配置すると動作がおかしくなったり。。。

      • by Anonymous Coward

        Linuxカーネルのworkerと何が違うのって思う。
        あれも自前でworkqueue用意するとかしない限り、各CPU毎のkworkerで良い感じに処理してくれるしなぁ。

    • by Anonymous Coward

      記事読むとご指摘の通りのなんちゃってスレッドですね
      多分工夫しなくてもI/Oでブロックされないプログラムが作れるものだと思います

      デメリットはマルチコア使えないのでCPU負荷が高い場合は向いてないとリンク先の記事に書かれてますね

      メリットは使用メモリが少なく済むとかいろいろあるけど
      最近のマルチCPUには向いてるかも?
      CPUの近くにメモリが配置されるようになったけど、逆に別CPUに繋がってるメモリは遠くなってるので
      下手なマルチスレッドで共有メモリ使うものは性能が上がりにくくなった可能性がある
      逆に昔ながらのプロセスモデルだと、近くのメモリを使うので性能が上がりやすい
      マルチスレッドをグループで管理してなるべく近くのメモリを共有する仕組みがうまく当てはまれば問題ではないんだろうけど

    • by Anonymous Coward

      WindowsのUser-Mode Schedulingならブロッキングするsyscallした時点で自動で切り替わるよ

      と思ったらUMS死んでた

一つのことを行い、またそれをうまくやるプログラムを書け -- Malcolm Douglas McIlroy

処理中...