Drop threadpool dep (was spawning threads over and over)
This commit is contained in:
parent
2d7715f8d7
commit
d859b4b70e
|
@ -12,7 +12,6 @@ dependencies = [
|
||||||
"mktemp 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
"mktemp 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"nix 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"nix 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"notify 2.6.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
"notify 2.6.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"threadpool 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
|
||||||
"winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
"winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -249,11 +248,6 @@ dependencies = [
|
||||||
"winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
"winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "threadpool"
|
|
||||||
version = "1.3.2"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "time"
|
name = "time"
|
||||||
version = "0.1.35"
|
version = "0.1.35"
|
||||||
|
@ -350,7 +344,6 @@ dependencies = [
|
||||||
"checksum semver 0.1.20 (registry+https://github.com/rust-lang/crates.io-index)" = "d4f410fedcf71af0345d7607d246e7ad15faaadd49d240ee3b24e5dc21a820ac"
|
"checksum semver 0.1.20 (registry+https://github.com/rust-lang/crates.io-index)" = "d4f410fedcf71af0345d7607d246e7ad15faaadd49d240ee3b24e5dc21a820ac"
|
||||||
"checksum slab 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "d807fd58c4181bbabed77cb3b891ba9748241a552bcc5be698faaebefc54f46e"
|
"checksum slab 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "d807fd58c4181bbabed77cb3b891ba9748241a552bcc5be698faaebefc54f46e"
|
||||||
"checksum term_size 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3f7f5f3f71b0040cecc71af239414c23fd3c73570f5ff54cf50e03cef637f2a0"
|
"checksum term_size 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3f7f5f3f71b0040cecc71af239414c23fd3c73570f5ff54cf50e03cef637f2a0"
|
||||||
"checksum threadpool 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "59f6d3eff89920113dac9db44dde461d71d01e88a5b57b258a0466c32b5d7fe1"
|
|
||||||
"checksum time 0.1.35 (registry+https://github.com/rust-lang/crates.io-index)" = "3c7ec6d62a20df54e07ab3b78b9a3932972f4b7981de295563686849eb3989af"
|
"checksum time 0.1.35 (registry+https://github.com/rust-lang/crates.io-index)" = "3c7ec6d62a20df54e07ab3b78b9a3932972f4b7981de295563686849eb3989af"
|
||||||
"checksum unicode-segmentation 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b905d0fc2a1f0befd86b0e72e31d1787944efef9d38b9358a9e92a69757f7e3b"
|
"checksum unicode-segmentation 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b905d0fc2a1f0befd86b0e72e31d1787944efef9d38b9358a9e92a69757f7e3b"
|
||||||
"checksum unicode-width 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2d6722facc10989f63ee0e20a83cd4e1714a9ae11529403ac7e0afd069abc39e"
|
"checksum unicode-width 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2d6722facc10989f63ee0e20a83cd4e1714a9ae11529403ac7e0afd069abc39e"
|
||||||
|
|
|
@ -19,7 +19,6 @@ lazy_static = "0.2.1"
|
||||||
libc = "0.2.16"
|
libc = "0.2.16"
|
||||||
log = "0.3.6"
|
log = "0.3.6"
|
||||||
notify = "2.6.3"
|
notify = "2.6.3"
|
||||||
threadpool = "1.3.2"
|
|
||||||
|
|
||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
mktemp = "0.3.1"
|
mktemp = "0.3.1"
|
||||||
|
|
|
@ -10,7 +10,6 @@ extern crate log;
|
||||||
#[macro_use]
|
#[macro_use]
|
||||||
extern crate lazy_static;
|
extern crate lazy_static;
|
||||||
extern crate notify;
|
extern crate notify;
|
||||||
extern crate threadpool;
|
|
||||||
|
|
||||||
#[cfg(unix)]
|
#[cfg(unix)]
|
||||||
extern crate nix;
|
extern crate nix;
|
||||||
|
|
|
@ -1,10 +1,9 @@
|
||||||
use threadpool::ThreadPool;
|
|
||||||
|
|
||||||
use std::cell::RefCell;
|
use std::cell::RefCell;
|
||||||
use std::collections::{BTreeMap, VecDeque};
|
use std::collections::{BTreeMap, VecDeque};
|
||||||
use std::path::{Component, PathBuf};
|
use std::path::{Component, PathBuf};
|
||||||
use std::rc::Rc;
|
use std::rc::Rc;
|
||||||
use std::sync::mpsc::Sender;
|
use std::sync::mpsc::{channel, Receiver, Sender};
|
||||||
|
use std::thread;
|
||||||
|
|
||||||
pub use self::imp::*;
|
pub use self::imp::*;
|
||||||
|
|
||||||
|
@ -178,26 +177,30 @@ mod imp {
|
||||||
/// On Windows, we don't have SIGCHLD, and even if we did, we'd still need
|
/// On Windows, we don't have SIGCHLD, and even if we did, we'd still need
|
||||||
/// to relay that over a channel.
|
/// to relay that over a channel.
|
||||||
pub struct ProcessReaper {
|
pub struct ProcessReaper {
|
||||||
pool: ThreadPool,
|
processes_tx: Sender<Process>,
|
||||||
tx: Sender<()>,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
impl ProcessReaper {
|
impl ProcessReaper {
|
||||||
pub fn new(tx: Sender<()>) -> ProcessReaper {
|
pub fn new(tx: Sender<()>) -> ProcessReaper {
|
||||||
|
let (processes_tx, processes_rx): (Sender<Process>, Receiver<Process>) = channel();
|
||||||
|
|
||||||
|
thread::spawn(move || {
|
||||||
|
loop {
|
||||||
|
while let Ok(mut process) = processes_rx.recv() {
|
||||||
|
process.wait();
|
||||||
|
|
||||||
|
let _ = tx.send(());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
ProcessReaper {
|
ProcessReaper {
|
||||||
pool: ThreadPool::new(1),
|
processes_tx: processes_tx
|
||||||
tx: tx,
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn wait_process(&self, mut process: imp::Process) {
|
pub fn wait_process(&self, process: imp::Process) {
|
||||||
let tx = self.tx.clone();
|
let _ = self.processes_tx.send(process);
|
||||||
|
|
||||||
self.pool.execute(move || {
|
|
||||||
process.wait();
|
|
||||||
|
|
||||||
let _ = tx.send(());
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue