os0thread.h
上传用户:romrleung
上传日期:2022-05-23
资源大小:18897k
文件大小:4k
源码类别:

MySQL数据库

开发平台:

Visual C++

  1. /******************************************************
  2. The interface to the operating system
  3. process and thread control primitives
  4. (c) 1995 Innobase Oy
  5. Created 9/8/1995 Heikki Tuuri
  6. *******************************************************/
  7. #ifndef os0thread_h
  8. #define os0thread_h
  9. #include "univ.i"
  10. /* Maximum number of threads which can be created in the program;
  11. this is also the size of the wait slot array for MySQL threads which
  12. can wait inside InnoDB */
  13. #define OS_THREAD_MAX_N srv_max_n_threads
  14. /* Possible fixed priorities for threads */
  15. #define OS_THREAD_PRIORITY_NONE 100
  16. #define OS_THREAD_PRIORITY_BACKGROUND 1
  17. #define OS_THREAD_PRIORITY_NORMAL 2
  18. #define OS_THREAD_PRIORITY_ABOVE_NORMAL 3
  19. #ifdef __WIN__
  20. typedef void* os_thread_t;
  21. typedef ulint os_thread_id_t; /* In Windows the thread id
  22. is an unsigned long int */
  23. #else
  24. typedef pthread_t               os_thread_t;
  25. typedef os_thread_t           os_thread_id_t; /* In Unix we use the thread
  26. handle itself as the id of
  27. the thread */
  28. #endif
  29. /* Define a function pointer type to use in a typecast */
  30. typedef void* (*os_posix_f_t) (void*);
  31. /*******************************************************************
  32. Compares two thread ids for equality. */
  33. ibool
  34. os_thread_eq(
  35. /*=========*/
  36. /* out: TRUE if equal */
  37. os_thread_id_t a, /* in: OS thread or thread id */
  38. os_thread_id_t b); /* in: OS thread or thread id */
  39. /********************************************************************
  40. Converts an OS thread id to a ulint. It is NOT guaranteed that the ulint is
  41. unique for the thread though! */
  42. ulint
  43. os_thread_pf(
  44. /*=========*/
  45. /* out: unsigned long int */
  46. os_thread_id_t a); /* in: thread or thread id */
  47. /********************************************************************
  48. Creates a new thread of execution. The execution starts from
  49. the function given. The start function takes a void* parameter
  50. and returns a ulint.
  51. NOTE: We count the number of threads in os_thread_exit(). A created
  52. thread should always use that to exit and not use return() to exit. */
  53. os_thread_t
  54. os_thread_create(
  55. /*=============*/
  56. /* out: handle to the thread */
  57. #ifndef __WIN__
  58.  os_posix_f_t            start_f,
  59. #else
  60. ulint (*start_f)(void*), /* in: pointer to function
  61. from which to start */
  62. #endif
  63. void* arg, /* in: argument to start
  64. function */
  65. os_thread_id_t* thread_id); /* out: id of the created
  66. thread */
  67. int
  68. os_thread_join(
  69. /*=============*/
  70.   os_thread_id_t  thread_id); /* in: id of the thread to join */
  71. /*********************************************************************
  72. Exits the current thread. */
  73. void
  74. os_thread_exit(
  75. /*===========*/
  76. void* exit_value); /* in: exit value; in Windows this void*
  77. is cast as a DWORD */
  78. /*********************************************************************
  79. Returns the thread identifier of current thread. */
  80. os_thread_id_t
  81. os_thread_get_curr_id(void);
  82. /*========================*/
  83. /*********************************************************************
  84. Returns handle to the current thread. */
  85. os_thread_t
  86. os_thread_get_curr(void);
  87. /*====================*/
  88. /*********************************************************************
  89. Advises the os to give up remainder of the thread's time slice. */
  90. void
  91. os_thread_yield(void);
  92. /*=================*/
  93. /*********************************************************************
  94. The thread sleeps at least the time given in microseconds. */
  95. void
  96. os_thread_sleep(
  97. /*============*/
  98. ulint tm); /* in: time in microseconds */
  99. /**********************************************************************
  100. Gets a thread priority. */
  101. ulint
  102. os_thread_get_priority(
  103. /*===================*/
  104. /* out: priority */
  105. os_thread_t handle);/* in: OS handle to the thread */
  106. /**********************************************************************
  107. Sets a thread priority. */
  108. void
  109. os_thread_set_priority(
  110. /*===================*/
  111. os_thread_t handle, /* in: OS handle to the thread */
  112. ulint pri); /* in: priority: one of OS_PRIORITY_... */
  113. /**********************************************************************
  114. Gets the last operating system error code for the calling thread. */
  115. ulint
  116. os_thread_get_last_error(void);
  117. /*==========================*/
  118. #ifndef UNIV_NONINL
  119. #include "os0thread.ic"
  120. #endif
  121. #endif