問題タブ [rust-tokio]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1293 参照

async-await - 特定のスレッドで非同期関数を実行する

特定の実行時間の長い関数 (データベース クエリを実行する関数) を別のスレッドで実行したいと考えています。ただし、基盤となるデータベース エンジンでは一度に 1 つの接続しか許可されておらず、接続構造体では許可されていないと仮定しましょうSync(少なくとも後者は に当てはまると思いますdiesel)。

私の解決策は、すべてのデータベース作業が発生し、メインスレッドが生きている限り実行される単一の個別のスレッド (スレッドプールとは対照的に) を持つことです。チャネルを介してメッセージを渡す方法でこれを行う必要があることはわかっていると思いますが、それにはかなりのボイラープレート コードが必要です (たとえば、関数の引数をチャネルを介して明示的に送信するなど)。

このようなことを錆で達成するためのより直接的な方法はありますか?

私は次の行に沿って何かをしたいと思っています:

wherequery_functionは、すぐにフューチャーを返し、他のスレッドで作業を行う関数になります。

Rust nightly と外部クレート/マクロは問題ありません。