AsyncTaskPool

Trait AsyncTaskPool 

Source
pub trait AsyncTaskPool<O: Default + 'static = ()>:
    Default
    + Send
    + Sync
    + 'static {
    type Pool: AsyncTaskPoolExt<O> + AsyncTaskPool<O>;

    // Required methods
    fn get_thread_id(&self) -> usize;
    fn len(&self) -> usize;
    fn push(&self, task: Arc<AsyncTask<Self::Pool, O>>) -> Result<()>;
    fn push_local(&self, task: Arc<AsyncTask<Self::Pool, O>>) -> Result<()>;
    fn push_priority(
        &self,
        priority: usize,
        task: Arc<AsyncTask<Self::Pool, O>>,
    ) -> Result<()>;
    fn push_keep(&self, task: Arc<AsyncTask<Self::Pool, O>>) -> Result<()>;
    fn try_pop(&self) -> Option<Arc<AsyncTask<Self::Pool, O>>>;
    fn try_pop_all(&self) -> IntoIter<Arc<AsyncTask<Self::Pool, O>>>;
    fn get_thread_waker(&self) -> Option<&Arc<(AtomicBool, Mutex<()>, Condvar)>>;
}
Expand description

异步任务池

Required Associated Types§

Required Methods§

Source

fn get_thread_id(&self) -> usize

获取绑定的线程唯一id

Source

fn len(&self) -> usize

获取当前异步任务池内任务数量

Source

fn push(&self, task: Arc<AsyncTask<Self::Pool, O>>) -> Result<()>

将异步任务加入异步任务池

Source

fn push_local(&self, task: Arc<AsyncTask<Self::Pool, O>>) -> Result<()>

将异步任务加入本地异步任务池

Source

fn push_priority( &self, priority: usize, task: Arc<AsyncTask<Self::Pool, O>>, ) -> Result<()>

将指定了优先级的异步任务加入任务池

Source

fn push_keep(&self, task: Arc<AsyncTask<Self::Pool, O>>) -> Result<()>

异步任务被唤醒时,将异步任务继续加入异步任务池

Source

fn try_pop(&self) -> Option<Arc<AsyncTask<Self::Pool, O>>>

尝试从异步任务池中弹出一个异步任务

Source

fn try_pop_all(&self) -> IntoIter<Arc<AsyncTask<Self::Pool, O>>>

尝试从异步任务池中弹出所有异步任务

Source

fn get_thread_waker(&self) -> Option<&Arc<(AtomicBool, Mutex<()>, Condvar)>>

获取本地线程的唤醒器

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§