본문 바로가기

프로그래밍/C

[C언어]window mutex, linux mutex 코드 비교

반응형

~

 

리눅스와 윈도우에서 호환되는 뮤텍스를 사용하고 싶은경우

 

윈도우 운영체제에서 리눅스에서 사용되는 pthread.h를 다운받아서 프로그래밍하면 편해요!

 

하지만 이미 windows.h를 이용해 프로그래밍을 하신 분들을 위해

 

windows.h -> pthread.h 로 코드를 변경한 예를 보여드릴게요.

 

~

 

 

 

 

#include <windows.h>  

  HANDLE hMutex; DWORD wait_result;

    hMutex = CreateMutex(NULL, FALSE, LOG_MUTEX_NAME);

    if (hMutex == NULL) { return; }

    wait_result = WaitForSingleObject(hMutex, 10000);

    if (wait_result != WAIT_OBJECT_0) { CloseHandle(hMutex); return; }

                          ~코드~

    ReleaseMutex(hMutex); CloseHandle(hMutex);

 

 

 

 #include <pthread.h>

    pthread_mutex_t mutx; int mutxstate, mutex_lock_error;

    pthread_t thread1;

    mutxstate = pthread_mutex_init(&mutx, NULL);  if (mutxstate) return;

    mutex_lock_error = pthread_mutex_lock (&mutx);  

    if (mutex_lock_error) { pthread_mutex_destroy(&mutx); return; }

                          ~코드~

    pthread_mutex_unlock(&mutx); pthread_mutex_destroy(&mutx);

 

 

 

 

~

 

위가 windows.h, 아래가 pthread.h입니다.

 

다행히 두 헤더파일에서 사용되는 함수들이 비슷하기에 쉽게 바꿀 수 있었어요!

 

함수들에 대한 자세한 설명은 구글에 함수명 검색해보시면 잘나오니까 검색해보세요!

 

~

 

 

 

 

 

반응형