File diff r23496:661d21df67d7 → r23497:a0ab44ebd2fa
src/thread/thread_win32.cpp
Show inline comments
 
@@ -49,7 +49,7 @@ public:
 
		ResumeThread(this->thread);
 
	}
 

	
 
	/* virtual */ ~ThreadObject_Win32()
 
	~ThreadObject_Win32() override
 
	{
 
		if (this->thread != NULL) {
 
			CloseHandle(this->thread);
 
@@ -57,14 +57,14 @@ public:
 
		}
 
	}
 

	
 
	/* virtual */ bool Exit()
 
	bool Exit() override
 
	{
 
		assert(GetCurrentThreadId() == this->id);
 
		/* For now we terminate by throwing an error, gives much cleaner cleanup */
 
		throw OTTDThreadExitSignal();
 
	}
 

	
 
	/* virtual */ void Join()
 
	void Join() override
 
	{
 
		/* You cannot join yourself */
 
		assert(GetCurrentThreadId() != this->id);
 
@@ -126,13 +126,13 @@ public:
 
		this->event = CreateEvent(NULL, FALSE, FALSE, NULL);
 
	}
 

	
 
	/* virtual */ ~ThreadMutex_Win32()
 
	~ThreadMutex_Win32() override
 
	{
 
		DeleteCriticalSection(&this->critical_section);
 
		CloseHandle(this->event);
 
	}
 

	
 
	/* virtual */ void BeginCritical(bool allow_recursive = false)
 
	void BeginCritical(bool allow_recursive = false) override
 
	{
 
		/* windows mutex is recursive by itself */
 
		EnterCriticalSection(&this->critical_section);
 
@@ -140,14 +140,14 @@ public:
 
		if (!allow_recursive && this->recursive_count != 1) NOT_REACHED();
 
	}
 

	
 
	/* virtual */ void EndCritical(bool allow_recursive = false)
 
	void EndCritical(bool allow_recursive = false) override
 
	{
 
		if (!allow_recursive && this->recursive_count != 1) NOT_REACHED();
 
		this->recursive_count--;
 
		LeaveCriticalSection(&this->critical_section);
 
	}
 

	
 
	/* virtual */ void WaitForSignal()
 
	void WaitForSignal() override
 
	{
 
		assert(this->recursive_count == 1); // Do we need to call Begin/EndCritical multiple times otherwise?
 
		this->EndCritical();
 
@@ -155,7 +155,7 @@ public:
 
		this->BeginCritical();
 
	}
 

	
 
	/* virtual */ void SendSignal()
 
	void SendSignal() override
 
	{
 
		SetEvent(this->event);
 
	}