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

MySQL数据库

开发平台:

Visual C++

  1. /* Copyright (C) 2003 MySQL AB
  2.    This program is free software; you can redistribute it and/or modify
  3.    it under the terms of the GNU General Public License as published by
  4.    the Free Software Foundation; either version 2 of the License, or
  5.    (at your option) any later version.
  6.    This program is distributed in the hope that it will be useful,
  7.    but WITHOUT ANY WARRANTY; without even the implied warranty of
  8.    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  9.    GNU General Public License for more details.
  10.    You should have received a copy of the GNU General Public License
  11.    along with this program; if not, write to the Free Software
  12.    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */
  13. #ifndef NDB_THREAD_H
  14. #define NDB_THREAD_H
  15. #include <ndb_global.h>
  16. #ifdef __cplusplus
  17. extern "C" {
  18. #endif
  19. typedef enum NDB_THREAD_PRIO_ENUM {
  20.   NDB_THREAD_PRIO_HIGHEST,
  21.   NDB_THREAD_PRIO_HIGH,
  22.   NDB_THREAD_PRIO_MEAN,
  23.   NDB_THREAD_PRIO_LOW,
  24.   NDB_THREAD_PRIO_LOWEST
  25. } NDB_THREAD_PRIO;
  26. typedef void* (NDB_THREAD_FUNC)(void*);
  27. typedef void* NDB_THREAD_ARG;
  28. typedef size_t NDB_THREAD_STACKSIZE;
  29. struct NdbThread;
  30. /**
  31.  * Create a thread
  32.  *
  33.  *  * p_thread_func: pointer of the function to run in the thread
  34.  *  * p_thread_arg: pointer to argument to be passed to the thread 
  35.  *  * thread_stack_size: stack size for this thread
  36.  *  * p_thread_name: pointer to name of this thread
  37.  *  * returnvalue: pointer to the created thread
  38.  */
  39. struct NdbThread* NdbThread_Create(NDB_THREAD_FUNC *p_thread_func,
  40.                       NDB_THREAD_ARG *p_thread_arg,
  41.          const NDB_THREAD_STACKSIZE thread_stack_size,
  42.       const char* p_thread_name,
  43.                       NDB_THREAD_PRIO thread_prio);
  44. /**
  45.  * Destroy a thread
  46.  *  Deallocates memory for thread
  47.  *  And NULL the pointer
  48.  *
  49.  */
  50. void NdbThread_Destroy(struct NdbThread** p_thread);
  51.  
  52. /**
  53.  * Waitfor a thread, suspend the execution of the calling thread
  54.  * until the wait_thread_id completes
  55.  *
  56.  * * p_wait_thread, pointer to the thread to wait for
  57.  * * status: exit code from thread waited for
  58.  * * returnvalue: true = succeded, false = failed
  59.  */
  60. int NdbThread_WaitFor(struct NdbThread* p_wait_thread, void** status);      
  61. /**
  62.  * Exit thread, terminates the calling thread 
  63.  *   
  64.  * *  status: exit code
  65.  */
  66. void NdbThread_Exit(void *status);
  67. /**
  68.  * Set thread concurrency level
  69.  *   
  70.  * *  
  71.  */
  72. int NdbThread_SetConcurrencyLevel(int level);
  73. #ifdef __cplusplus
  74. }
  75. #endif
  76. #endif