Replace CreateThread with QueueUserWorkItem
Fixes #24869 stuttering on Windows by reusing long running threadpool threads instead of creating a new thread on each call to Thread::start.
This commit is contained in:
parent
73a7a1a388
commit
e65bce3083
1 changed files with 4 additions and 7 deletions
|
@ -52,6 +52,7 @@ DWORD ThreadWindows::thread_callback(LPVOID userdata) {
|
|||
|
||||
t->id = (ID)GetCurrentThreadId(); // must implement
|
||||
t->callback(t->user);
|
||||
SetEvent(t->handle);
|
||||
|
||||
ScriptServer::thread_exit();
|
||||
|
||||
|
@ -63,13 +64,9 @@ Thread *ThreadWindows::create_func_windows(ThreadCreateCallback p_callback, void
|
|||
ThreadWindows *tr = memnew(ThreadWindows);
|
||||
tr->callback = p_callback;
|
||||
tr->user = p_user;
|
||||
tr->handle = CreateThread(
|
||||
NULL, // default security attributes
|
||||
0, // use default stack size
|
||||
thread_callback, // thread function name
|
||||
tr, // argument to thread function
|
||||
0, // use default creation flags
|
||||
NULL); // returns the thread identifier
|
||||
tr->handle = CreateEvent(NULL, TRUE, FALSE, NULL);
|
||||
|
||||
QueueUserWorkItem(thread_callback, tr, WT_EXECUTELONGFUNCTION);
|
||||
|
||||
return tr;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue