pikapython/package/threading/threading_Condition.c
2024-10-12 16:53:18 +08:00

46 lines
1.5 KiB
C

#include "threading_Condition.h"
#include "PikaPlatformEx.h"
void threading_Condition___del__(PikaObj* self) {
pika_platform_thread_cond_t* cond = obj_getPtr(self, "_cond_");
pika_platform_thread_cond_destroy(cond);
pikaFree(cond, sizeof(pika_platform_thread_cond_t));
}
void threading_Condition___init__(PikaObj* self) {
pika_platform_thread_cond_t* cond =
pikaMalloc(sizeof(pika_platform_thread_cond_t));
pika_platform_thread_cond_init(cond);
obj_setPtr(self, "_cond_", cond);
}
pika_bool threading_Condition__is_owned(PikaObj* self) {
pika_platform_thread_cond_t* cond = obj_getPtr(self, "_cond_");
if (cond->owner != 0) {
return pika_true;
} else {
return pika_false;
}
}
void threading_Condition_notify(PikaObj* self, int n) {
pika_platform_thread_cond_t* cond = obj_getPtr(self, "_cond_");
pika_platform_thread_cond_signal(cond);
}
void threading_Condition_notify_all(PikaObj* self) {
pika_platform_thread_cond_t* cond = obj_getPtr(self, "_cond_");
pika_platform_thread_cond_broadcast(cond);
}
pika_bool threading_Condition_wait(PikaObj* self, Arg* timeout) {
// pika_platform_thread_cond_t * cond = obj_getPtr(self, "_cond_");
return pika_false;
}
pika_bool threading_Condition_acquire(PikaObj* self,
pika_bool block,
Arg* timeout) {
return pika_false;
}
void threading_Condition_release(PikaObj* self) {}