mirror of
https://github.com/godotengine/godot.git
synced 2025-10-20 08:23:29 +00:00
Modernize Thread
- Based on C++11's `thread` and `thread_local` - No more need to allocate-deallocate or check for null - No pointer anymore, just a member variable - Platform-specific implementations no longer needed (except for the few cases of non-portable functions) - Simpler for `NO_THREADS` - Thread ids are now the same across platforms (main is 1; others follow)
This commit is contained in:
parent
8f6a636ae7
commit
6d89f675b1
84 changed files with 370 additions and 1080 deletions
|
@ -36,7 +36,6 @@
|
|||
#include "editor/editor_node.h"
|
||||
|
||||
GDScriptLanguageServer::GDScriptLanguageServer() {
|
||||
thread = NULL;
|
||||
thread_running = false;
|
||||
started = false;
|
||||
|
||||
|
@ -88,9 +87,8 @@ void GDScriptLanguageServer::start() {
|
|||
if (protocol.start(port, IP_Address("127.0.0.1")) == OK) {
|
||||
EditorNode::get_log()->add_message("--- GDScript language server started ---", EditorLog::MSG_TYPE_EDITOR);
|
||||
if (use_thread) {
|
||||
ERR_FAIL_COND(thread != NULL);
|
||||
thread_running = true;
|
||||
thread = Thread::create(GDScriptLanguageServer::thread_main, this);
|
||||
thread.start(GDScriptLanguageServer::thread_main, this);
|
||||
}
|
||||
set_process_internal(!use_thread);
|
||||
started = true;
|
||||
|
@ -99,11 +97,9 @@ void GDScriptLanguageServer::start() {
|
|||
|
||||
void GDScriptLanguageServer::stop() {
|
||||
if (use_thread) {
|
||||
ERR_FAIL_COND(NULL == thread);
|
||||
ERR_FAIL_COND(!thread.is_started());
|
||||
thread_running = false;
|
||||
Thread::wait_to_finish(thread);
|
||||
memdelete(thread);
|
||||
thread = NULL;
|
||||
thread.wait_to_finish();
|
||||
}
|
||||
protocol.stop();
|
||||
started = false;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue