learning-systems-programming-in-rust icon indicating copy to clipboard operation
learning-systems-programming-in-rust copied to clipboard

13.7 節をリプレースする

Open yuk1ty opened this issue 4 years ago • 0 comments

節タイトル

sync パッケージ

対象コード

  • 13.7.1: https://github.com/yurakawa/learn-system-programming-with-go/blob/master/ch13/s7-1/main.go
  • 13.7.2: https://github.com/yurakawa/learn-system-programming-with-go/blob/master/ch13/s7-2/main.go
  • 13.7.3: https://github.com/yurakawa/learn-system-programming-with-go/tree/master/ch13/s7-3
  • 13.7.4: https://github.com/yurakawa/learn-system-programming-with-go/blob/master/ch13/s7-4/main.go
  • 13.7.5: https://github.com/yurakawa/learn-system-programming-with-go/blob/master/ch13/s7-6/main.go

補足説明

全部 goroutine の中でロックをかけるなどしているので、tokio 前提でいきたいと思います。

  • 13.7.1 は tokio::sync::Mutex と tokio::sync::RWLock を用いれば実装できる?https://docs.rs/tokio/1.6.1/tokio/sync/struct.Mutex.html
  • 13.7.2 は tokio::sync::Barrier が似てる→https://users.rust-lang.org/t/does-rust-have-an-equivalent-to-gos-waitgroup/41095
  • 13.7.3 は tokio::sync::OnceCell で書き直しできそう→https://docs.rs/tokio/1.6.1/tokio/sync/struct.OnceCell.html
  • 13.7.4 は tokio には Condvar がなさそうなので、どうしようかと思っています。
  • 13.7.5 は https://github.com/jonhoo/flurry などを使うとできそうだけど、無理して実装しなくてもいいと思っています。

yuk1ty avatar Jun 06 '21 12:06 yuk1ty