/
LavrGov
/
thread_pool
Обзор
Документация
Войти
/
LavrGov
/
thread_pool
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
rust_pool/src/queue.rs
40 строк
836 B
Lavrentiy
Realizing your own simple thread pool in c++ and rust
08 май 2025, 22:19
08 май 2025, 22:19
0fc8cf1
Код
Авторство
О чём код?
use std::collections::VecDeque; use std::sync::Mutex; use std::sync::Arc; pub struct BlockingQueue<T> { buffer: Arc<Mutex<VecDeque<T>>> } impl<T> BlockingQueue<T> { pub fn new() -> Self { Self {buffer: Arc::new(Mutex::new(VecDeque::new()))} } pub fn take(& self) -> T { loop { let mut lock = self.buffer.lock().unwrap(); if !lock.is_empty() { let ans = lock.pop_front().unwrap(); return ans; } else { drop(lock); } } } pub fn put(& mut self, new_task: T) { let mut guard = self.buffer.lock().unwrap(); guard.push_back(new_task); } } impl<T> Clone for BlockingQueue<T> { fn clone(&self) -> Self { Self {buffer: Arc::clone(&self.buffer)} } }