互斥锁mutex

https://blog.csdn.net/rqc112233/article/details/50015069

//g++ mute.cpp -o mute -g -lrt -lpthread
#include <stdio.h>
#include <pthread.h>
#include <unistd.h>
#include <syslog.h>

static pthread_mutex_t testlock;
pthread_t test_thread;

void *test(void *)
{
    pthread_mutex_lock(&testlock);
    printf("thread Test() \n");
    syslog(LOG_DEBUG, "thread Test() \n");
    pthread_mutex_unlock(&testlock);
}

int main()
{
    openlog("syslog",  LOG_PID, LOG_DAEMON);
    pthread_mutex_init(&testlock, NULL);
    pthread_mutex_lock(&testlock);

    printf("Main lock \n");
    syslog(LOG_DEBUG, "Main lock \n");
    pthread_create(&test_thread, NULL, &test, NULL);
    sleep(3); //更加明显的观察到是否执行了创建线程的互斥锁
    printf("Main unlock \n");
    syslog(LOG_DEBUG, "Main unlock \n");
    pthread_mutex_unlock(&testlock);
    sleep(1);
    printf("Main after sleep \n");
    syslog(LOG_DEBUG, "Main after sleep \n");
    pthread_join(test_thread, NULL);
    pthread_mutex_destroy(&testlock);
    closelog();
    return 0;
}

小技巧:借助syslog 记录时间  cat /var/log/syslog

输出:

Jul  5 16:23:24 Linux syslog[19982]: Main lock
Jul  5 16:23:27 Linux syslog[19982]: Main unlock
Jul  5 16:23:27 Linux syslog[19982]: thread Test()
Jul  5 16:23:28 Linux syslog[19982]: Main after sleep

猜你喜欢

转载自www.cnblogs.com/hixin/p/9269048.html