Tokio 阻塞執行緒任務

2022-09-26 05:12:08 字數 512 閱讀 1875

參考:

spawn_blocking方法可以接收乙個閉包,可以是乙個阻塞任務。

tokio 有兩種執行緒。一種給非同步任務的核心執行緒,一種是執行同步任務的阻塞執行緒。

核心執行緒池的數量和 cpu 核數相同,阻塞執行緒只有在需要的時候新建。

use std::;

use tokio::runtime::runtime;

fn main() -> io::result<()> ", thread::current().name().unwrap());

});println!("{}", thread::current().name().unwrap());

runtime.shutdown_timeout(duration::from_secs(4));

ok(())

}

spawn_blocking方法用來提交阻塞任務。

Tokio 當前執行緒任務

參考 block on 方法可以接收乙個非同步任務,在當前執行緒中執行並阻塞直到完成。runtime new 建立的執行時,會有乙個主線程和 cpu 邏輯核數相等工作執行緒。use std use tokio runtime runtime fn main io result thread curr...

Tokio 非阻塞關閉執行時

參考 shutdown background方法可以立即關閉執行時,不會產生阻塞。通常在另乙個執行時中呼叫,避免阻塞。由於shutdown background不等待任務結束,可能會產生資源洩露。use std use tokio runtime runtime fn main io result ...

自定義執行緒池阻塞式提交任務

public class contentindexbuilder 這種拒絕執行策略在任務佇列滿後會使任務在呼叫執行緒中執行 這種方式可以避免任務無限制的迅速提交,同時避免任務的放棄 private final static int n threads 5 private final static i...