logo

English

이곳의 프로그래밍관련 정보와 소스는 마음대로 활용하셔도 좋습니다. 다만 쓰시기 전에 통보 정도는 해주시는 것이 예의 일것 같습니다. 질문이나 오류 수정은 siseong@gmail.com 으로 주세요. 감사합니다.

gcc thread and mutex 사용법

by lizard2019 posted Feb 27, 2019
?

Shortcut

PrevPrev Article

NextNext Article

Larger Font Smaller Font Up Down Go comment Print
?

Shortcut

PrevPrev Article

NextNext Article

Larger Font Smaller Font Up Down Go comment Print
#include <pthread.h>
#include <stdlib.h>
#include <unistd.h>
#include <stdio.h>

// volatile 변수를 선언해서 lock으로 사용하는 예제
//volatile int lock = 0;
pthread_mutex_t lock;

int tot = 0;
void sum(int id)
{

        while(1){
            //while(lock) {
            //    usleep(100);
            //}
            //lock = 1;

            pthread_mutex_lock(&lock); // 다른 쓰레드에서 접근시 대기

            for(int i = 0; i <= 100 ; i++) {
                tot += i;
                usleep(500);
            }
            printf("thread%d = %d\n", id, tot);
            tot = 0;
            //lock = 0;
            pthread_mutex_unlock(&lock); // 다른 쓰레드에서 진행할 수 있도록 해제
            usleep(500);
        }
}

void* thread1()
{
    sum(1);
    return NULL;
}

void* thread2()
{
    sum(2);
        return NULL;
}

int main()
{
    int status;
    pthread_t tid1,tid2;

    // mutex를 사용하기 위해 초기화
    if (pthread_mutex_init(&lock, NULL) != 0)
    {
        printf("\n mutex init failed\n");
        return 1;
    }

    pthread_create(&tid1,NULL,thread1,NULL);
    pthread_create(&tid2,NULL,thread2,NULL);
    pthread_join(tid1,NULL);
    pthread_join(tid2,NULL);
    
    /// mutex 삭제
    pthread_mutex_destroy(&lock);

    return 0;
}
TAG •

List of Articles
No. Subject Author Date Views
84 공짜 무료 C/C++ 컴파일러들 file digipine 2017.10.28 4378
83 [ubuntu, 우분투] sendmail 설치 digipine 2017.11.02 2317
82 [Swift, MacOS] 맥 한글 파일명이 윈도우에서 자소 분리되는 현상 해결, NFD, NFC 엉뚱도마뱀 2018.12.11 20080
81 [Qt] QSettings 클래스의 설명과 사용법, 설정 저장위치 digipine 2017.11.02 1470
80 [Linux] ubuntu 16.04에 QT Creator 설치하기 digipine 2017.11.02 24348
79 [Linux, OSX] pfctl - Packet FIlter Control 사용법 digipine 2017.11.02 3189
78 [iOS] Bluetooth로 App을 백그라운드 모드로 실행는 방법 lizard2019 2020.02.11 3527
77 XOR Encryption : 단순하면서도 강력한 암호/복호화 기법 digipine 2017.11.02 1737
76 Xcode 없이 맥에 '명령어 라인 도구(Command Line Tools)'를 설치하는 방법 엉뚱도마뱀 2018.12.26 2859
75 xcode xib encountered an error communicating with ibagent-ios 해결 digipine 2022.10.06 384
74 XCode 사용시 git ignore 로 xcuserstate 충돌 해결하기, .gitignore에 등록했는데도 동작안할때 해결방법 lizard2019 2022.09.25 441
73 WPA_SUPPLICANT 빌드 방법 digipine 2017.11.01 338
72 WPA_SUPPLICANT 빌드 방법 digipine 2017.11.01 544
71 WinPCap과 Ethereal, Wireshark 을 이용한 스니핑(Sniffing) digipine 2017.10.29 5428
70 Windows에서 SVN 용 폴더 한 번에 삭제하기 digipine 2017.10.29 463
69 Windows API - 안전한 문자열 함수들 digipine 2017.10.28 354
68 WIN CE, GPS - NMEA protocol - GPS Virtual Driver digipine 2017.10.28 2830
67 WIN CE C++ 시리얼 제어 방법 digipine 2017.10.28 631
66 Wi-Fi Display Standard Miracast Protocol Log digipine 2017.11.02 850
65 Wi-Fi display (miracast) FFMpeg MpegTs Supported digipine 2017.11.02 1303
Board Pagination Prev 1 2 3 4 5 6 Next
/ 6