35 lines
806 B
C++
35 lines
806 B
C++
#include "doctest.h"
|
|
#include "tactility_core.h"
|
|
#include "mutex.h"
|
|
|
|
static int thread_with_mutex_parameter(void* parameter) {
|
|
Mutex mutex = (Mutex)parameter;
|
|
tt_mutex_acquire(mutex, TtWaitForever);
|
|
return 0;
|
|
}
|
|
|
|
TEST_CASE("a mutex can block a thread") {
|
|
Mutex mutex = tt_mutex_alloc(MutexTypeNormal);
|
|
tt_mutex_acquire(mutex, TtWaitForever);
|
|
|
|
Thread* thread = tt_thread_alloc_ex(
|
|
"thread",
|
|
1024,
|
|
&thread_with_mutex_parameter,
|
|
mutex
|
|
);
|
|
tt_thread_start(thread);
|
|
|
|
tt_delay_ms(5);
|
|
CHECK_EQ(tt_thread_get_state(thread), ThreadStateRunning);
|
|
|
|
tt_mutex_release(mutex);
|
|
|
|
tt_delay_ms(5);
|
|
CHECK_EQ(tt_thread_get_state(thread), ThreadStateStopped);
|
|
|
|
tt_thread_join(thread);
|
|
tt_thread_free(thread);
|
|
tt_mutex_free(mutex);
|
|
}
|