Advertisement
Guest User

Untitled

a guest
Oct 16th, 2019
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.05 KB | None | 0 0
  1. #include <cstdio>
  2. #include <climits>
  3. #include <cctype>
  4. #include <cmath>
  5. #include <cstring>
  6.  
  7. #include <iostream>
  8. #include <algorithm>
  9. #include <vector>
  10. #include <set>
  11. #include <map>
  12. #include <queue>
  13.  
  14. using namespace std;
  15.  
  16. #define ARR_SIZE(x) ((int)sizeof(x)/sizeof(x[0]))
  17.  
  18. #ifndef NDEBUG /* fllow the macor `NDEBUG` from assert.h */
  19. # define _D(...) printf(__VA_ARGS__)
  20. #else
  21. # define _D(...) ((void)0)
  22. #endif
  23.  
  24. class Lock {
  25. private:
  26. pthread_mutex_t *lock;
  27.  
  28. public:
  29. Lock(pthread_mutex_t &mutex) {
  30. lock = &mutex;
  31. pthread_mutex_lock(lock);
  32. }
  33.  
  34. ~Lock() {
  35. pthread_mutex_unlock(lock);
  36. }
  37. };
  38.  
  39. #define lock1(lk) if (Lock(lk), 1)
  40.  
  41. #define lock2(lk) \
  42. for (int __quit__ = 0; \
  43. !__quit__ && (pthread_mutex_lock(lk), 1); \
  44. __quit__ = 1, pthread_mutex_unlock(lk))
  45.  
  46. int main(int argc, char **argv)
  47. {
  48. pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
  49.  
  50. lock1(mutex) {
  51. printf("use lock with c++ style\n");
  52. }
  53.  
  54. lock2(&mutex) {
  55. printf("use lock with c style\n");
  56. }
  57.  
  58. return 0;
  59. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement