`

使用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

    1. `pthread_mutex_init()`: 初始化一个互斥锁对象,需要指定互斥锁的属性,如是否可重入、公平性等。 2. `pthread_mutex_lock()`: 当线程需要访问共享资源时,调用此函数锁定互斥锁。如果锁已经被其他线程持有,...

    pthread_cond_wait() 用法深入分析

    static pthread_mutex_t mtx = PTHREAD_MUTEX_INITIALIZER; static pthread_cond_t cond = PTHREAD_COND_INITIALIZER; static int data_ready = 0; // 生产者线程 void* producer(void* arg) { // 生产数据... ...

    3_pthread_sync_mutex_with_productor_and_consumer.tgz

    具体来说,`pthread_mutex_t`类型表示一个互斥锁对象,可以通过`pthread_mutex_init()`初始化,`pthread_mutex_lock()`锁定,`pthread_mutex_unlock()`解锁。在消费者和生产者之间,通常会有一个共享资源(如缓冲区...

    pthreads_pthread_

    4. `pthread_mutex_t` 和 `pthread_mutex_init() / pthread_mutex_lock() / pthread_mutex_unlock() / pthread_mutex_destroy()`:互斥锁,用于保证同一时刻只有一个线程访问特定资源,防止数据竞争。 5. `pthread_...

    lib_mutex_linux.rar_Over

    int ret = pthread_mutex_init(&mutex, NULL); if (ret != 0) { // 错误处理 } ``` 3. 在需要保护的代码段之前,调用`pthread_mutex_lock()`获取锁。 ```c ret = pthread_mutex_lock(&mutex); if (ret != 0) { /...

    Windows可使用的pthread库

    pthread-win32是pthread库的一个移植版本,它为Windows操作系统提供了与Posix线程兼容的API,使得C和C++开发者能够在Windows上使用pthread相关的函数,如`pthread_create`、`pthread_join`、`pthread_mutex_lock`等...

    pthread(arm_linux).zip_ARM Linux_arm_arm linux pthread_arm pthre

    1. 互斥锁:通过`pthread_mutex_init()`、`pthread_mutex_lock()`和`pthread_mutex_unlock()`来初始化、锁定和解锁互斥锁,确保同一时间只有一个线程能访问临界区。 2. 条件变量:允许线程在满足特定条件时挂起,当...

    2_pthread_sync.tgz

    `pthread_mutex_t`是POSIX线程库中的互斥锁类型,可以使用`pthread_mutex_init`初始化,`pthread_mutex_lock`获取锁,`pthread_mutex_unlock`释放锁。 2. **条件变量**:条件变量允许线程等待某个特定条件满足后再...

    pthread-primer.rar_Pthread Primer pdf_pthread_pthread primer

    例如,`pthread_create()`用于创建新的线程,`pthread_join()`用于等待线程结束,`pthread_mutex_t`和`pthread_mutex_lock()`、`pthread_mutex_unlock()`用于互斥锁,保证资源的安全访问,`pthread_cond_t`和`...

    windows 下的pthread 库

    - **互斥量**(Mutex):`pthread_mutex_t`是互斥量类型,`pthread_mutex_init()`和`pthread_mutex_destroy()`用于初始化和销毁互斥量,`pthread_mutex_lock()`和`pthread_mutex_unlock()`用于锁定和解锁,防止多个...

    共享内存+互斥量实现linux进程间通信.pdf

    使用方法 pthread_mutex_init(&mutex,NULL)。函数成功返回 0,失败返回非 0。 第二步:对互斥量进程上锁,使用 pthread_mutex_lock() 函数,函数原型如下: ```c int pthread_mutex_lock(pthread_mutex_t *mutex); ...

    linux 买票退票系统

    在 main 函数中,我们创建了两个线程 pthread1 和 pthread2,并使用 pthread_mutex_init 函数初始化 mutex 对象。 在 pthread1 函数中,我们使用 while 循环不断地卖出票,并使用 pthread_mutex_lock 函数锁定 mutex...

    进程间的同步实现读者写者问题

    通过本次实验,我们掌握了互斥型信号量的使用和读者-写者问题的解决方法,了解了 pthread_mutex_init、pthread_mutex_unlock 和 pthread_mutex_lock 函数的使用,并且熟悉了操作互斥锁的几个函数。 此外,我们也...

    pthread经典用法

    1. 初始化:`pthread_mutex_init()`用于初始化Mutex。 2. 加锁:`pthread_mutex_lock()`将Mutex锁定,如果已被其他线程锁定,则当前线程会被挂起。 3. 尝试加锁:`pthread_mutex_trylock()`尝试加锁,如果锁已存在,...

    多线程互斥锁和条件变量demo

    1. 初始化互斥锁:使用pthread_mutex_init()函数初始化一个互斥锁,设置其属性。通常,无需特殊属性,直接使用默认值即可。 2. 加锁与解锁:在访问共享资源之前,使用pthread_mutex_lock()函数尝试获取锁。如果锁已...

    Pthread-Primer.rar_pthread_unix primer

    1. 互斥锁(Mutex):`pthread_mutex_t`类型的数据结构,用于保护临界区,防止多个线程同时访问共享资源。 2. 条件变量(Condition Variable):`pthread_cond_t`,配合互斥锁实现线程间的同步等待和唤醒。 3. 读写...

    pthread_pthread_

    - **互斥量(Mutex)**:`pthread_mutex_t`是互斥锁类型,通过`pthread_mutex_init()`初始化,`pthread_mutex_lock()`锁定,`pthread_mutex_unlock()`解锁,确保同一时间只有一个线程访问临界区。 - **条件变量...

    mutex_writelog.tar.gz

    2. **创建互斥锁**:使用`pthread_mutex_init()`函数初始化一个互斥锁变量。这通常在程序启动时进行。 ```c pthread_mutex_t mutex; pthread_mutex_init(&mutex, NULL); ``` 3. **锁定和解锁**:在写入日志之前,...

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

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

Global site tag (gtag.js) - Google Analytics