Use recursive mutexes in the C++ thread implementation

This commit is contained in:
David Hrdlička
2021-12-17 18:32:11 +01:00
parent e0a73a99ec
commit 153ac6df9a

View File

@@ -41,7 +41,7 @@ thread_wait(thread_t *arg, int timeout)
mutex_t * mutex_t *
thread_create_mutex(void) thread_create_mutex(void)
{ {
auto mutex = new std::mutex; auto mutex = new std::recursive_mutex;
return mutex; return mutex;
} }
@@ -50,7 +50,7 @@ thread_wait_mutex(mutex_t *_mutex)
{ {
if (_mutex == nullptr) if (_mutex == nullptr)
return(0); return(0);
auto mutex = reinterpret_cast<std::mutex*>(_mutex); auto mutex = reinterpret_cast<std::recursive_mutex*>(_mutex);
mutex->lock(); mutex->lock();
return 1; return 1;
} }
@@ -61,7 +61,7 @@ thread_release_mutex(mutex_t *_mutex)
{ {
if (_mutex == nullptr) if (_mutex == nullptr)
return(0); return(0);
auto mutex = reinterpret_cast<std::mutex*>(_mutex); auto mutex = reinterpret_cast<std::recursive_mutex*>(_mutex);
mutex->unlock(); mutex->unlock();
return 1; return 1;
} }
@@ -70,7 +70,7 @@ thread_release_mutex(mutex_t *_mutex)
void void
thread_close_mutex(mutex_t *_mutex) thread_close_mutex(mutex_t *_mutex)
{ {
auto mutex = reinterpret_cast<std::mutex*>(_mutex); auto mutex = reinterpret_cast<std::recursive_mutex*>(_mutex);
delete mutex; delete mutex;
} }