semaphore.c
上传用户:gzpyjq
上传日期:2013-01-31
资源大小:1852k
文件大小:1k
源码类别:

手机WAP编程

开发平台:

WINDOWS

  1. /*
  2.  * semaphore.c - implementation of semaphores
  3.  *
  4.  * Lars Wirzenius
  5.  */
  6. #include "gwlib/gwlib.h"
  7. struct Semaphore {
  8.     List *list;
  9. };
  10. Semaphore *semaphore_create(long n)
  11. {
  12.     Semaphore *semaphore;
  13.     static char item;
  14.     
  15.     semaphore = gw_malloc(sizeof(*semaphore));
  16.     semaphore->list = list_create();
  17.     list_add_producer(semaphore->list);
  18.     while (n-- > 0)
  19. list_produce(semaphore->list, &item);
  20.     return semaphore;
  21. }
  22. void semaphore_destroy(Semaphore *semaphore)
  23. {
  24.     if (semaphore != NULL) {
  25. list_destroy(semaphore->list, NULL);
  26. gw_free(semaphore);
  27.     }
  28. }
  29. void semaphore_up(Semaphore *semaphore)
  30. {
  31.     static char item;
  32.     list_produce(semaphore->list, &item);
  33. }
  34. void semaphore_down(Semaphore *semaphore)
  35. {
  36.     list_consume(semaphore->list);
  37. }