`

使用pthread_mutex_init

 
阅读更多

参考自: http://www.cnblogs.com/hnrainll/archive/2011/04/22/2025225.html

#include <pthread.h>
#include <stdio.h>
#include <string.h>
pthread_mutex_t pattr; 
void* func(void* arg){
	pthread_mutex_lock(&pattr);		
	char* str = (char*)arg;
	while(*str != '\0'){
		fputc(*str, stdout);
		str++;
	}
	fputc('\n', stdout);
	pthread_mutex_unlock(&pattr);		
}
int main(){
	pthread_mutex_init(&pattr, NULL);	
	pthread_t p1, p2; 
	char str1[8], str2[8]; 
	sprintf(str1, "abcdefg");
	sprintf(str2, "1234567");
	int ret;
	if((ret = pthread_create(&p1, NULL, func, str1)) != 0){
		fprintf(stderr, "create thread error. msg:%s", strerror(ret));
	}
	if((ret = pthread_create(&p2, NULL, func, str2)) != 0){
		fprintf(stderr, "create thread error. msg:%s", strerror(ret));
	}
	pthread_join(p1, NULL);
	pthread_join(p2, NULL);
}	
 
分享到:
评论

相关推荐

    pthread_mutex

    linux 同步与互斥 posix 线程互斥 实现 。(此为博客http://blog.csdn.net/shallnet 文章对应源码下载)

    Windows多线程编程缺少pthread.h文件问题

    pthread_attr_init(&attr); pthread_attr_setscope(&attr, PTHREAD_SCOPE_PROCESS); pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED); pthread_create(&newThread, &attr, Function_t, NULL);

    linux 内核mutex.c 源码分析实例

    linux 内核 mutex.c 源码分析实例,我的实例主要先初始化了一个互斥体m,然后获取互斥体的锁(解锁),紧接着释放互斥体的锁(解锁)。最后释放互斥体。中间通过输出m.count来显示互斥体的状态。

    Linux C 多线程编程之互斥锁与条件变量实例详解

    int pthread_mutex_init(pthread_mutex_t *restrict mutex, const pthread_mutexattr_t *restric attr); int pthread_mutex_destroy(pthread_mutex_t *mutex); 头文件: 返回值: 成功则返回0, 出错则返回错误编号....

    数码天空破解文件cccam205

    libpthread.so.0 pthread_cond_wait recv connect pthread_create send accept pthread_cond_signal pthread_cond_init pthread_mutex_unlock pthread_mutex_lock pthread_mutex_init _Jv_RegisterClasses close ...

    线程加锁程序,pthread-mutex-t

    pthread_mutex_t mutex; pthread_mutex_init(&mutex,NULL); pthread_mutex_lock(&mutex); pthread_mutex_unlock(&mutex); pthread_mutex_destroy(&mutex);

    Linux系统编程之线程同步

    int pthread_mutex_init(pthread_mutex_t *restrict mutex, const pthread_mutexattr_t *restrict attr); 参1:传出参数,调用时应传 &mutex restrict关键字:只用于限制指针,告诉编译器,所有修改该指针指向...

    实验5--Linux-高级程序设计.doc

    实验5 Linux 高级程序设计 1、实验目的 (1)了解Linux操作系统下应用程序开发流程 (2)掌握gun工具链的... void init(struct prodcons *b) { pthread_mutex_init(&b-&gt;lock, NULL); pthread_cond_init(&b-&gt;notempty, NU

    linux之线程同步的概要介绍与分析

    Linux中使用`pthread_mutex_t`类型来实现互斥锁,通过`pthread_mutex_init()`初始化,`pthread_mutex_lock()`上锁,`pthread_mutex_unlock()`解锁。 2. **信号量(Semaphore)**:信号量是一种更为灵活的同步工具,...

    互斥量mutex的简单使用(实例讲解)

    int pthread_mutex_init(pthread_mutex_t *restrict mutex, const pthread_mutex_t *restrict attr); //初始化mutex int pthread_mutex_destroy(pthread_mutex_t *mutex); //如果mutex是动态分配的,则释放内存前...

    嵌入式的多线程应用程序设计

    pthread_mutex_init(&b-&gt;lock, NULL); pthread_cond_init(&b-&gt;notempty, NULL); pthread_cond_init(&b-&gt;notfull, NULL); b-&gt;readpos = 0; b-&gt;writepos = 0; } /*---------------------------------------------...

    linux+c+线程锁

    pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; pthrepthread_mutex_lock(&mutex;) pthread_mutex_trylock(&mutex;) ...pthread_mutex_init(&mutex;,NULL); pthread_mutex_destroy(&mutex;);

    linuxC语言线程池实现CP命令

    init_pool(thread_pool *pool, unsigned int threads_number); //新增任务 bool add_task(thread_pool *pool, void *(*task)(void *arg), void *arg); //新增线程 int add_thread(thread_pool *pool, unsigned...

    Linux线程同步之互斥量(mutex)

    互斥量(也称为互斥锁)出自POSIX线程标准,可以用来同步同一进程中的各个线程。当然如果一个互斥量存放在多个进程共享的某个内存区中,那么还可以通过互斥量来进行进程间的同步。... int pthread_mutex_init (pthrea

    linux中编写自己的并发队列类(Queue 并发阻塞队列)

    template &lt;typename&gt;class Queue { public: Queue( ) { pthread_mutex_init(&_lock, NULL); } ~Queue( ) { pthread_mutex_destroy(&_lock); } void push(const T& data); T pop( ); private: l

    vxworks 并发服务器程序

    pthread_mutex_lock(&client;_list-&gt;mutex); //遍历客户链表检查超时的客户节点并将其从链表中移除 temp = client_list-&gt;client_head.next; while (temp != &client;_list -&gt;client_head) { next_node = ...

    Linux线程管理必备:互斥量与条件变量

    做过稍微大一点项目的人都知道,力求程序的稳定性和调度的方便,使用了大量的线程,几乎每个...  对于静态分配的互斥量,可以初始化为PTHREAD_MUTEX_INITIALIZER(等价于pthread_mutex_init(…, NULL))或调用pthread

    thl_r16_tinav2.0_hm1375验证通过_增加打印设备ID_20170824_1447.7z

    videobuf_queue_dma_contig_init(&dev-&gt;vb_vidq, &vfe_video_qops, NULL, &dev-&gt;slock, V4L2_BUF_TYPE_VIDEO_CAPTURE, V4L2_FIELD_NONE,//default format, can be changed by s_fmt sizeof(struct vfe...

    hm1375_tinav2.1验证通过_增加设备ID的读取显示_20170825_1333没有外层目录.7z

    videobuf_queue_dma_contig_init(&dev-&gt;vb_vidq, &vfe_video_qops, NULL, &dev-&gt;slock, V4L2_BUF_TYPE_VIDEO_CAPTURE, V4L2_FIELD_NONE,//default format, can be changed by s_fmt sizeof(struct vfe...

    r40_tinav2.1_最终验证通过_使用CB-S来验证OV5640有横条纹fpscamera+SPI2.0成功_20171114_1443没有外层目录.7z

    r40_tinav2.1_最终验证通过_使用CB-S来验证OV5640有横条纹fpscamera+SPI2.0成功_20171114_1443没有外层目录.7z 开发板:CB-S 1、(可选修改/调试技巧:) 除了ov5640.c之外,其它的驱动都不编译,节省编译时间!...

Global site tag (gtag.js) - Google Analytics