Changeset 26 in libcf for trunk/include/cf_thread.h
- Timestamp:
- 02/04/13 17:00:53 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/include/cf_thread.h
r6 r26 1 1 /** 2 * cf_thread.h 2 * @file cf_thread.h 3 * @author myusgun <myusgun@gmail.com> 4 * @version 0.1 5 * 6 * @remark 멀티스레드 및 뮤텍스 지원 3 7 */ 4 8 #ifndef __CF_THREAD_H__ … … 14 18 15 19 #ifdef _WIN32 16 //# include <stddef.h> 17 # define CF_THREAD_RETURN unsigned int 18 # define CF_THREAD_CALL __stdcall 20 # define CF_THREAD_RETURN unsigned int /**< 스레드 워커 함수 반환 형 */ 21 # define CF_THREAD_CALL __stdcall /**< 스레드 워커 함수 호출 규약 */ 19 22 #else // #ifdef _WIN32 20 # define CF_THREAD_RETURN void * 21 # define CF_THREAD_CALL 23 # define CF_THREAD_RETURN void * /**< 스레드 워커 함수 반환 형 */ 24 # define CF_THREAD_CALL /**< 스레드 워커 함수 호출 규약 */ 22 25 #endif // #ifdef _WIN32 23 26 27 /** 스레드 워커 함수 형태이며, CF_Thread_Function 형식 */ 24 28 typedef CF_THREAD_RETURN (CF_THREAD_CALL * CF_Thread_Function) (void *); 25 29 30 /** 스레드 아이디 */ 26 31 typedef void * CF_Thread; 32 33 /** 뮤텍스 아이디 */ 27 34 typedef void * CF_Mutex; 28 35 … … 31 38 #endif 32 39 40 /** 41 * 스레드를 생성 42 * 43 * @return 성공 시, CF_OK; 실패 시, 오류 코드 44 * 45 * @param threadID 스레드 아이디 주소 46 * @param callback 스레드 워커 함수 이름 47 * @param arg 스레드 함수로 전달할 인자 48 * 49 * @code 50 51 #include "cf_thread.h" 52 53 CF_Mutex globalMutex; 54 55 CF_THREAD_RETURN CF_THREAD_CALL worker (void * arg) { 56 if (CF_Mutex_Create (&globalMutex) < 0) { 57 // error 58 } 59 60 if (CF_Mutex_Lock (&globalMutex) < 0) { // for critical section 61 // error 62 } 63 64 // critical section 65 66 if (CF_Mutex_Unlock (&globalMutex) < 0) { // for critical section 67 // error 68 } 69 70 if (CF_Mutex_Destory (&globalMutex) < 0) { 71 // error 72 } 73 } 74 75 int main (void) { 76 CF_Thread tid; 77 if (CF_Thread_Craete (&tid, worker, NULL) < 0) { 78 // error 79 } 80 81 if (CF_Thread_Join (&tid) < 0) { // block 82 // error 83 } 84 85 if (CF_Thread_Release (&tid) < 0) { 86 // error 87 } 88 } 89 90 * @endcode 91 */ 33 92 CF_EXPORT int 34 93 CF_Thread_Create (CF_Thread * threadID, … … 36 95 void * arg); 37 96 97 /** 98 * 스레드 아이디를 해제 99 * 100 * @return 성공 시, CF_OK; 실패 시, 오류 코드 101 * 102 * @param threadID 스레드 아이디 주소 103 * 104 * @remark 스레드 아이디를 해제하는 것이며 워커 스레드가 종료되지 않음 105 */ 38 106 CF_EXPORT int 39 107 CF_Thread_Release (CF_Thread * threadID); 40 108 109 /** 110 * 스레드가 종료될 때 까지 대기 111 * 112 * @return CF_OK 반환 113 * 114 * @param threadID 스레드 아이디 주소 115 */ 41 116 CF_EXPORT int 42 117 CF_Thread_Join (CF_Thread * threadID); 43 118 119 /** 120 * 뮤텍스 생성 121 * 122 * @return 성공 시, CF_OK; 실패 시, 오류 코드 123 * 124 * @param mutex 뮤텍스 아이디 주소 125 * 126 * @see CF_Thread_Craete 127 */ 44 128 CF_EXPORT int 45 129 CF_Mutex_Create (CF_Mutex * mutex); 46 130 131 /** 132 * 뮤텍스 해제 133 * 134 * @return 성공 시, CF_OK; 실패 시, 오류 코드 135 * 136 * @param mutex 뮤텍스 아이디 주소 137 */ 47 138 CF_EXPORT int 48 139 CF_Mutex_Destory (CF_Mutex * mutex); 49 140 141 /** 142 * 뮤텍스 잠금 143 * 144 * @return 성공 시, CF_OK; 실패 시, 오류 코드 145 * 146 * @param mutex 뮤텍스 아이디 주소 147 */ 50 148 CF_EXPORT int 51 149 CF_Mutex_Lock (CF_Mutex * mutex); 52 150 151 /** 152 * 뮤텍스 잠금 해제 153 * 154 * @return 성공 시, CF_OK; 실패 시, 오류 코드 155 * 156 * @param mutex 뮤텍스 아이디 주소 157 */ 53 158 CF_EXPORT int 54 159 CF_Mutex_Unlock (CF_Mutex * mutex);
Note:
See TracChangeset
for help on using the changeset viewer.