summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEli Zaretskii <eliz@gnu.org>2014-03-25 18:00:37 +0200
committerEli Zaretskii <eliz@gnu.org>2014-03-25 18:00:37 +0200
commitdefd53bdc5ef9d75fa112487d76f4d7a4cb9fe92 (patch)
tree74a6ded6b17e777ad30256887d54ef0d17a7287c
parent1e952f0a7a1d0cc533438dcad37db08d8af6855f (diff)
downloademacs-defd53bdc5ef9d75fa112487d76f4d7a4cb9fe92.tar.gz
Speed up thread startup on MS-Windows.
src/w32.c (w32_delayed_load): Call DisableThreadLibraryCalls on the DLL handle, to speed up thread startup.
-rw-r--r--src/ChangeLog5
-rw-r--r--src/w32.c7
2 files changed, 12 insertions, 0 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index 44ebe76555c..31d90663206 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,8 @@
+2014-03-25 Eli Zaretskii <eliz@gnu.org>
+
+ * w32.c (w32_delayed_load): Call DisableThreadLibraryCalls on the
+ DLL handle, to speed up thread startup.
+
2014-03-25 Paul Eggert <eggert@cs.ucla.edu>
Handle sigmask better with nested signal handlers (Bug#15561).
diff --git a/src/w32.c b/src/w32.c
index 8802e13e71d..1ffb6ec171f 100644
--- a/src/w32.c
+++ b/src/w32.c
@@ -8702,6 +8702,13 @@ w32_delayed_load (Lisp_Object library_id)
/* Possibly truncated */
? make_specified_string (name, -1, len, 1)
: Qnil);
+ /* This prevents thread start and end notifications
+ from being sent to the DLL, for every thread we
+ start. We don't need those notifications because
+ threads we create never use any of these DLLs, only
+ the main thread uses them. This is supposed to
+ speed up thread creation. */
+ DisableThreadLibraryCalls (dll_handle);
break;
}
}