threading_Condition.c 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. #include "threading_Condition.h"
  2. #include "PikaPlatformEx.h"
  3. void threading_Condition___del__(PikaObj* self) {
  4. pika_platform_thread_cond_t* cond = obj_getPtr(self, "_cond_");
  5. pika_platform_thread_cond_destroy(cond);
  6. pikaFree(cond, sizeof(pika_platform_thread_cond_t));
  7. }
  8. void threading_Condition___init__(PikaObj* self) {
  9. pika_platform_thread_cond_t* cond =
  10. pikaMalloc(sizeof(pika_platform_thread_cond_t));
  11. pika_platform_thread_cond_init(cond);
  12. obj_setPtr(self, "_cond_", cond);
  13. }
  14. pika_bool threading_Condition__is_owned(PikaObj* self) {
  15. pika_platform_thread_cond_t* cond = obj_getPtr(self, "_cond_");
  16. if (cond->owner != 0) {
  17. return pika_true;
  18. } else {
  19. return pika_false;
  20. }
  21. }
  22. void threading_Condition_notify(PikaObj* self, int n) {
  23. pika_platform_thread_cond_t* cond = obj_getPtr(self, "_cond_");
  24. pika_platform_thread_cond_signal(cond);
  25. }
  26. void threading_Condition_notify_all(PikaObj* self) {
  27. pika_platform_thread_cond_t* cond = obj_getPtr(self, "_cond_");
  28. pika_platform_thread_cond_broadcast(cond);
  29. }
  30. pika_bool threading_Condition_wait(PikaObj* self, Arg* timeout) {
  31. // pika_platform_thread_cond_t * cond = obj_getPtr(self, "_cond_");
  32. return pika_false;
  33. }
  34. pika_bool threading_Condition_acquire(PikaObj* self,
  35. pika_bool block,
  36. Arg* timeout) {
  37. return pika_false;
  38. }
  39. void threading_Condition_release(PikaObj* self) {}