Changeset 26 in libcf for trunk/include/cf_thread.h


Ignore:
Timestamp:
02/04/13 17:00:53 (11 years ago)
Author:
cheese
Message:

#1 documentation with doxygen

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/cf_thread.h

    r6 r26  
    11/**
    2  * cf_thread.h
     2 * @file    cf_thread.h
     3 * @author  myusgun <myusgun@gmail.com>
     4 * @version 0.1
     5 *
     6 * @remark 멀티스레드 및 뮤텍스 지원
    37 */
    48#ifndef __CF_THREAD_H__
     
    1418
    1519#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       /**< 스레드 워커 함수 호출 규약 */
    1922#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                     /**< 스레드 워커 함수 호출 규약 */
    2225#endif // #ifdef _WIN32
    2326
     27/** 스레드 워커 함수 형태이며, CF_Thread_Function 형식 */
    2428typedef CF_THREAD_RETURN  (CF_THREAD_CALL * CF_Thread_Function) (void *);
    2529
     30/** 스레드 아이디 */
    2631typedef void *  CF_Thread;
     32
     33/** 뮤텍스 아이디 */
    2734typedef void *  CF_Mutex;
    2835
     
    3138#endif
    3239
     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
     53CF_Mutex globalMutex;
     54
     55CF_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
     75int 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 */
    3392CF_EXPORT int
    3493CF_Thread_Create    (CF_Thread          * threadID,
     
    3695                     void               * arg);
    3796
     97/**
     98 * 스레드 아이디를 해제
     99 *
     100 * @return 성공 시, CF_OK; 실패 시, 오류 코드
     101 *
     102 * @param threadID 스레드 아이디 주소
     103 *
     104 * @remark 스레드 아이디를 해제하는 것이며 워커 스레드가 종료되지 않음
     105 */
    38106CF_EXPORT int
    39107CF_Thread_Release   (CF_Thread * threadID);
    40108
     109/**
     110 * 스레드가 종료될 때 까지 대기
     111 *
     112 * @return CF_OK 반환
     113 *
     114 * @param threadID 스레드 아이디 주소
     115 */
    41116CF_EXPORT int
    42117CF_Thread_Join      (CF_Thread * threadID);
    43118
     119/**
     120 * 뮤텍스 생성
     121 *
     122 * @return 성공 시, CF_OK; 실패 시, 오류 코드
     123 *
     124 * @param mutex 뮤텍스 아이디 주소
     125 *
     126 * @see CF_Thread_Craete
     127 */
    44128CF_EXPORT int
    45129CF_Mutex_Create     (CF_Mutex * mutex);
    46130
     131/**
     132 * 뮤텍스 해제
     133 *
     134 * @return 성공 시, CF_OK; 실패 시, 오류 코드
     135 *
     136 * @param mutex 뮤텍스 아이디 주소
     137 */
    47138CF_EXPORT int
    48139CF_Mutex_Destory    (CF_Mutex * mutex);
    49140
     141/**
     142 * 뮤텍스 잠금
     143 *
     144 * @return 성공 시, CF_OK; 실패 시, 오류 코드
     145 *
     146 * @param mutex 뮤텍스 아이디 주소
     147 */
    50148CF_EXPORT int
    51149CF_Mutex_Lock       (CF_Mutex * mutex);
    52150
     151/**
     152 * 뮤텍스 잠금 해제
     153 *
     154 * @return 성공 시, CF_OK; 실패 시, 오류 코드
     155 *
     156 * @param mutex 뮤텍스 아이디 주소
     157 */
    53158CF_EXPORT int
    54159CF_Mutex_Unlock     (CF_Mutex * mutex);
Note: See TracChangeset for help on using the changeset viewer.