2017-01-04 6 views
1

スレッド内に単純なループがあり、ループを停止したいと思います。通常、Pythonでは、グローバル変数を使用してループを停止しますが、Rustについてはわかりません。Rustを使って別のスレッドからループを終了する

チャンネルについて聞いたことがありますが、チャンネルReceiverを新しいスレッドを開始する私の関数に渡す方法がわかりません。

+0

この質問は実際には何の努力もしていません。あなたは「チャンネルを通す方法がわからない」と言っていますが、何を試しましたか?関数に引数を渡すことは、ほとんどのプログラミング言語では非常に基本的な概念であり、Rustも変わりません。それをどうやって行うのか分からなければ、もっと複雑な命令のようにマルチスレッドを延期したいかもしれません。 – Shepmaster

+1

[std :: sync :: mpsc](https://doc.rust-lang.org/std/sync/mpsc/index.html)のドキュメントでは、チャネルSenderを新しいスレッドに移動する例を示しています。 –

+0

ドックは、特定のレシーバを1つのスレッドにしか入れることができないと言います。そして、それをargsで渡したいときは、のためにできません。私はそこに置くwathを知らない。レシーバ。私はレシーバーを渡したい。 Wathはここを通過するように訴えられている? – Minege

答えて

0

単純なループ条件では、チャネルが過剰なように見えます。代わりにatomic variableを使用して、スレッド間で共有することができます。

+1

原子変数を関数に渡すことをお勧めしますか? OPはそれをする方法を知らないかもしれません。 – Shepmaster

+0

mpscアシンメトリの問題は、アトミックには適用されません。任意の数のスレッド間で共有することができます。 – the8472

関連する問題