diff --git a/crates/voicevox_core/src/asyncs.rs b/crates/voicevox_core/src/asyncs.rs index b9f5edfdb..cd3c7c314 100644 --- a/crates/voicevox_core/src/asyncs.rs +++ b/crates/voicevox_core/src/asyncs.rs @@ -8,7 +8,7 @@ //! [blocking]クレートで駆動する非同期処理はランタイムが無くても動作する。そのため非同期版APIを //! もとにブロッキング版APIを構成することはできる。しかし将来WASMビルドすることを考えると、スレッド //! がまともに扱えないため機能しなくなってしまう。そのためWASM化を見越したブロッキング版APIのため -//! に[`Unstoppable`]を用意している。 +//! に[`SingleTasked`]を用意している。 //! //! [ブロッキング版API]: crate::blocking //! [非同期版API]: crate::tokio @@ -27,14 +27,19 @@ pub(crate) trait Async: 'static { async fn open_file(path: impl AsRef) -> io::Result; } -/// "async"としての責務を放棄し、すべてをブロックする。 +/// エグゼキュータが非同期タスクの並行実行をしないことを仮定する、[`Async`]の実装。 /// /// [ブロッキング版API]用。 /// +/// # Performance +/// +/// `async`の中でブロッキング操作を直接行う。そのためTokioやasync-stdのような通常の非同期ランタイム +/// 上で動くべきではない。 +/// /// [ブロッキング版API]: crate::blocking -pub(crate) enum Unstoppable {} +pub(crate) enum SingleTasked {} -impl Async for Unstoppable { +impl Async for SingleTasked { async fn open_file(path: impl AsRef) -> io::Result { return std::fs::File::open(path).map(UnstoppableFile); @@ -62,7 +67,7 @@ impl Async for Unstoppable { } } -/// [blocking]クレートで駆動する。 +/// [blocking]クレートで駆動する[`Async`]の実装。 /// /// [非同期版API]用。 /// diff --git a/crates/voicevox_core/src/voice_model.rs b/crates/voicevox_core/src/voice_model.rs index 96a7d4ec4..ac49d2cdb 100644 --- a/crates/voicevox_core/src/voice_model.rs +++ b/crates/voicevox_core/src/voice_model.rs @@ -388,7 +388,7 @@ pub(crate) mod blocking { use uuid::Uuid; use crate::{ - asyncs::Unstoppable, error::LoadModelResult, future::FutureExt as _, + asyncs::SingleTasked, error::LoadModelResult, future::FutureExt as _, infer::domains::InferenceDomainMap, VoiceModelMeta, }; @@ -397,7 +397,7 @@ pub(crate) mod blocking { /// 音声モデル。 /// /// VVMファイルと対応する。 - pub struct VoiceModel(Inner); + pub struct VoiceModel(Inner); impl self::VoiceModel { pub(crate) fn read_inference_models(