Changeset 57 in libcf
- Timestamp:
- 04/07/13 03:27:55 (11 years ago)
- Location:
- trunk
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/include/cf_thread.h
r50 r57 13 13 #include "cf_base.h" 14 14 15 #if defined(_WIN32) || defined(_WIN64)16 # define CF_THREAD_RETURN unsigned int /**< 스레드 워커 함수 반환 형 */17 # define CF_THREAD_CALL __stdcall /**< 스레드 워커 함수 호출 규약 */18 #else19 # define CF_THREAD_RETURN void * /**< 스레드 워커 함수 반환 형 */20 # define CF_THREAD_CALL /**< 스레드 워커 함수 호출 규약 */21 #endif22 23 15 /** 스레드 워커 함수 형태이며, CF_Thread_Function 형식 */ 24 typedef CF_THREAD_RETURN (CF_THREAD_CALL* CF_Thread_Function) (void *);16 typedef int (* CF_Thread_Function) (void *); 25 17 26 18 /** 스레드 아이디 */ -
trunk/src/cf_thread.c
r55 r57 15 15 # define THREAD_TYPE HANDLE 16 16 # define MUTEX_TYPE HANDLE 17 # define THREAD_RETURN unsigned long /**< 스레드 워커 함수 반환 형 */ 18 # define THREAD_CALL __stdcall 17 19 #else // #if defined(_WIN32) || defined(_WIN64) 18 20 # include <pthread.h> 19 21 # define THREAD_TYPE pthread_t 20 22 # define MUTEX_TYPE pthread_mutex_t 23 # define THREAD_RETURN void * /**< 스레드 워커 함수 반환 형 */ 24 # define THREAD_CALL 21 25 #endif // #if defined(_WIN32) || defined(_WIN64) 22 26 … … 57 61 int result = 0; 58 62 59 #if defined(_WIN32) || defined(_WIN64) 60 *threadID = (THREAD_TYPE) _beginthreadex (0, 0, callback, arg, 0, 0); 63 THREAD_RETURN THREAD_CALL f = (THREAD_RETURN THREAD_CALL) callback; 64 65 #if defined(_WIN32) || defined(_WIN64) 66 67 *threadID = (THREAD_TYPE) CreateThread (NULL, 0, f, arg, 0, NULL); 61 68 if (*threadID == NULL) 62 69 return CF_ERROR_THREAD_CREATE; … … 66 73 return CF_ERROR_THREAD_CREATE; 67 74 68 result = pthread_create ((THREAD_TYPE *) *threadID, NULL, callback, arg);75 result = pthread_create ((THREAD_TYPE *) *threadID, NULL, f, arg); 69 76 if (result < 0) 70 77 return CF_ERROR_THREAD_CREATE; -
trunk/test/test.c
r56 r57 29 29 const char * file = "./log.txt"; 30 30 31 CF_THREAD_RETURN CF_THREAD_CALLtest_log_mt (void * arg)31 int test_log_mt (void * arg) 32 32 { 33 33 static int cnt = 0; … … 52 52 CF_DEBUG_PRINT (stderr, "end %dth thread\n", th); 53 53 54 return (CF_THREAD_RETURN)0;54 return 0; 55 55 } 56 56 … … 171 171 } 172 172 173 CF_THREAD_RETURN CF_THREAD_CALLsocket_echo_server (void * arg)173 int socket_echo_server (void * arg) 174 174 { 175 175 int srvsock = *((int *)arg); … … 184 184 { 185 185 CF_DEBUG_PRINT (stderr, "failed to accept on server\n"); 186 return (CF_THREAD_RETURN)-1;186 return -1; 187 187 } 188 188 CF_Log_Write (LOG_SOCKET, "SERVER", "accepted\n"); … … 193 193 { 194 194 CF_DEBUG_PRINT (stderr, "failed to recv on server\n"); 195 return (CF_THREAD_RETURN)-2;195 return -2; 196 196 } 197 197 CF_Log_Write (LOG_SOCKET, "SERVER", "recv {%s}\n", buf); … … 199 199 if (CF_Socket_Send (clntsock, buf, recvd) < 0) 200 200 { 201 return (CF_THREAD_RETURN)-3;201 return -3; 202 202 } 203 203 CF_Log_Write (LOG_SOCKET, "SERVER", "resp {%s}\n", buf); … … 206 206 CF_Socket_Close (clntsock); 207 207 208 return (CF_THREAD_RETURN)0;209 /*------------------------------------------------------------*/ 210 } 211 212 CF_THREAD_RETURN CF_THREAD_CALLsocket_echo_client (void * arg)208 return 0; 209 /*------------------------------------------------------------*/ 210 } 211 212 int socket_echo_client (void * arg) 213 213 { 214 214 int sock = 0; … … 224 224 { 225 225 CF_DEBUG_PRINT (stderr, "failed to connect on client\n"); 226 return (CF_THREAD_RETURN)-1;226 return -1; 227 227 } 228 228 CF_Log_Write (LOG_SOCKET, "CLIENT", "connected\n"); … … 233 233 { 234 234 CF_DEBUG_PRINT (stderr, "failed to send on client %d\n", errno); 235 return (CF_THREAD_RETURN)-2;235 return -2; 236 236 } 237 237 CF_Log_Write (LOG_SOCKET, "CLIENT", "sent {%s}\n", buf); … … 242 242 { 243 243 CF_DEBUG_PRINT (stderr, "failed to recv on client\n"); 244 return (CF_THREAD_RETURN)-3;244 return -3; 245 245 } 246 246 CF_Log_Write (LOG_SOCKET, "CLIENT", "recv {%s}\n", buf); … … 249 249 CF_Socket_Close (sock); 250 250 251 return (CF_THREAD_RETURN)0;251 return 0; 252 252 /*------------------------------------------------------------*/ 253 253 } -
trunk/test/thread.c
r35 r57 10 10 CF_Mutex globalMutex; 11 11 12 CF_THREAD_RETURN CF_THREAD_CALLworker (void * arg) {12 int worker (void * arg) { 13 13 if (CF_Mutex_Lock (&globalMutex) < 0) { // for critical section 14 14 // error … … 21 21 } 22 22 23 return (CF_THREAD_RETURN)0;23 return 0; 24 24 } 25 25
Note:
See TracChangeset
for help on using the changeset viewer.