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

手机WAP编程

开发平台:

WINDOWS

  1. /*
  2.  * check_counter.c - Check that Counter objects work
  3.  *
  4.  * This is a test program for checking Counter objects. It creates some
  5.  * threads that get many counts and check that they are increasing.
  6.  */
  7. #include <limits.h>
  8. #ifndef THREADS
  9. #define THREADS 16
  10. #endif
  11. #ifndef PER_THREAD
  12. #define PER_THREAD (1000)
  13. #endif
  14. #include "gwlib/gwlib.h"
  15. static void check(void *arg) {
  16. Counter *c;
  17. long i, this, prev;
  18. c = arg;
  19. prev = -1;
  20. for (i = 0; i < PER_THREAD; ++i) {
  21. this = counter_increase(c);
  22. if (this < 0)
  23. panic(0, "counter returned negative");
  24. if (this < prev)
  25. panic(0, "counter returned smaller than previous");
  26. prev = this;
  27. }
  28. }
  29. int main(void) {
  30. Counter *c;
  31. long threads[THREADS];
  32. long i;
  33. gwlib_init();
  34. log_set_output_level(GW_INFO);
  35. c = counter_create();
  36. for (i = 0; i < THREADS; ++i)
  37. threads[i] = gwthread_create(check, c);
  38. for (i = 0; i < THREADS; ++i)
  39. gwthread_join(threads[i]);
  40. return 0;
  41. }