pthread_mutex_init, pthread_mutex_lock, pthread_mutex_unlock,函数(线程互斥的例子)

转载 2013年12月03日 10:47:55

转自:http://blog.csdn.net/wangpengqi/article/details/7867505


/*
#include <pthread.h>
int pthread_mutex_init(pthread_mutex_t *restrict mutex, const pthread_mutexattr_t *restrict attr);
int pthread_mutex_destroy(pthread_mutex_t *mutex);

在使用互斥锁前,需要定义互斥锁(全局变量),定义互斥锁对象形式为:
     pthread_mutex_t lock;
在 pthread_mutex_init() 函数中:
第一个参数 mutex 是指向要初始化的互斥锁的指针。
第二个参数 mutexattr 是指向属性对象的指针,该属性对象定义要初始化的互斥锁的属性。如果该指针为 NULL,则使用默认的属性。

此外,还可以用宏 PTHREAD_MUTEX_INITIALIZER 来初始化静态分配的互斥锁,如下:
   pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;

对于静态初始化的互斥锁,不需要调用 pthread_mutex_init() 函数。
*/
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
  
void *function(void *arg);
pthread_mutex_t mutex;
int counter = 0;
int main(int argc, char *argv[])
{
    int rc1,rc2;
      
    char *str1="wenhaoll";
    char *str2="linglong";
    pthread_t thread1,thread2;
  
    pthread_mutex_init(&mutex,NULL);
    if((rc1 = pthread_create(&thread1,NULL,function,str1)))
    {
        fprintf(stdout,"thread 1 create failed: %d\n",rc1);
    }
  
    if(rc2=pthread_create(&thread2,NULL,function,str2))
    {
        fprintf(stdout,"thread 2 create failed: %d\n",rc2);
    }
  
    pthread_join(thread1,NULL);
    pthread_join(thread2,NULL);
    return 0;
}
  
void *function(void *arg)
{
    char *m;
    m = (char *)arg;
    pthread_mutex_lock(&mutex);
    while(*m != '\0')
    {
        printf("%c",*m);
        fflush(stdout);
        m++;
        sleep(1);
    }
    printf("\n");
    pthread_mutex_unlock(&mutex);
}

相关文章推荐

Linux下C语言多线程(第二篇)线程互斥pthread_mutex_t()

面先来一个实例来感受下Linux下C语言多线程编程的乐趣!我们通过创建两个线程来实现对一个数的递加。先不去理会代码的含义,我们先运行linux,在其中编写我们的第一个C语言多线程程序。 ...

pthread_mutex_init等多线程函数的使用总结

线程按照其调度者可以分为用户级线程和核心级线程两种 用户级线程主要解决的是上下文切换的问题,它的调度算法和调度过程全部由用户自行选择决定,在运行时不需要特定的内核支持; 我们常用基本就是用户级线程...

pthread 线程库编程 一:线程与互斥锁 mutex_lock

1 线程的概念: 在类Unix操作系统(Unix、Linux、Mac OS X等)中,都使用Pthreads作为操作系统的线程。2 创建一个线程: pthread_t p2p_thread...

linux基础编程 多线程中的互斥锁 pthread_mutex_lock

pthread_mutex.h头文件 #ifndef __SEM_UTIL_H__ #define __SEM_UTIL_H__ typedef void* SemHandl_t; SemH...
  • ghostyu
  • ghostyu
  • 2012年07月10日 20:19
  • 4575

pthread_mutex_unlock实现

我们接着看pthread_mutex_unlock的实现,会发现它跟pthread_mutex_lock形式差不多,并且底层调用futex换乐FUTEX_WAKE而已。 直接贴路径代码: int __...

pthread_mutex

  • 2014年12月17日 19:06
  • 1KB
  • 下载

C++ 多线程并发控制——互斥锁 pthread_mutex

问题描述:有两个线程,主线程负责接收数据,并暂时保存在内存中,当内存中数量达到一定数据量时,批量提交到oracle中;另一个线程作为提交线程,定时检查一遍,不论内存中数据量达到多少,定期将数据提交到o...

Linux线程-互斥锁pthread_mutex_t http://blog.csdn.net/zmxiangde_88/article/details/7998458

Linux线程-互斥锁pthread_mutex_t 分类: Linux线程2012-09-20 07:31 21143人阅读 评论(0) 收藏 举报 linuxnulljoinout...

Linux线程-互斥锁pthread_mutex_t应用

锁的应用 /* ************************************************************************  *  ...

pthread_mutex_lock

pthread_mutex_lock 2013-10-12 08:44 11434人阅读 评论(0) 收藏 举报  分类: c/c++(36)  pthre...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:pthread_mutex_init, pthread_mutex_lock, pthread_mutex_unlock,函数(线程互斥的例子)
举报原因:
原因补充:

(最多只允许输入30个字)