Tauri で thread safe ではない処理をいい感じに扱いたい(でも thread とかよくわからない) #Rust
やりたいこと
bitcoindevkit/bdk と Tauri でシンプルなウォレットを実装する
とりあえず、ハードコードしたウォレットの残高をフロントに表示したい
困っていること
フロントとインタラクトするメソッドは
execute_promise
か execute_promise_sync
のなかで実装するが、Send
が必要。
でも bdk::wallet::Wallet のなにかが満たしていなくて中で実行することができない。
んだと思う。
BDK はどうなっているのか
BDK は thread safe ではないからいつかやらないとね、という議論がされているもよう。
ということは、Tauri 側でうまく扱えるメソッドを見つけるか、自分の実装でなにか workaround できる方法を見つけないといけない?
Futures returned in library are not send · Issue #165 · bitcoindevkit/bdk
Tauri
フロントから Rust プロセスを呼び出すには invoke
と promisified
がある。
いま問題なのは promisified
で呼び出したときは threadpool でマルチスレッドで処理されるため、BDK の処理をその中で行えないこと?
invoke の場合
これはフロントには値は戻せないという理解であっているのだろうか :thinkig_face:
invoke の方では実行できるなら、invoke して処理をしておいて、あとからもう一度その結果を取得しにいくようにアプリケーションの処理として実装すればやりたいことができるのだろうか?
でもちゃんとリクエストの ID を管理しないといけなさそうな気がするか。
invoke の方では実行できるなら、invoke して処理をしておいて、あとからもう一度その結果を取得しにいくようにアプリケーションの処理として実装すればやりたいことができるのだろうか?
invoke のほうは実行できた
のでその結果をどこかに保持してく?
並列プログラミング初心者過ぎてやばいので勉強しないと進められない...。