worker: ability to disable thread unsafe tasks
The worker on Windows is implemented using a thread pool. If worker
tasks are not thread safe, badness can occur. In addition, if tasks
are executing CPU bound code and holding onto the GIL, there will be
non-substantial overhead in Python context switching between active
threads. This can result in significant slowdowns of tasks.
This commit teaches the code for determining whether to use a worker
to take thread safety into account. Effectively, thread unsafe tasks
don't use the thread-based worker on Windows.
Differential Revision: https://phab.mercurial-scm.org/D3962
[package]
name = "hgcli"
version = "0.1.0"
authors = ["Gregory Szorc <gregory.szorc@gmail.com>"]
license = "GPL-2.0"
build = "build.rs"
[[bin]]
name = "hg"
path = "src/main.rs"
[features]
# localdev: detect Python in PATH and use files from source checkout.
default = ["localdev"]
localdev = []
[dependencies]
libc = "0.2.34"
# We currently use a custom build of cpython and python27-sys with the
# following changes:
# * GILGuard call of prepare_freethreaded_python() is removed.
# TODO switch to official release when our changes are incorporated.
[dependencies.cpython]
version = "0.1"
default-features = false
features = ["python27-sys"]
git = "https://github.com/indygreg/rust-cpython.git"
rev = "c90d65cf84abfffce7ef54476bbfed56017a2f52"
[dependencies.python27-sys]
version = "0.1.2"
git = "https://github.com/indygreg/rust-cpython.git"
rev = "c90d65cf84abfffce7ef54476bbfed56017a2f52"