Linux 线程与互斥锁的使用
来源:互联网 发布:安徽金寨职业学校网络 编辑:程序博客网 时间:2024/05/16 16:56
互斥锁的基本函数和用于信号量的函数非常相似:
#include <pthread.h>
int pthread_mutex_init(pthread_mutex_t *mutex, const pthread_mutexattr_t, *mutexattr);
int pthread_mutex_lock(pthread_mutex_t *mutex);
int pthread_mutex_unlock(pthread_mutex_t *mutex);
int pthread_mutex_destory(pthread_mutex_t *mutex);
以下是代码实例:
#include <iostream>
#include <string>#include <pthread.h>
#include <stdio.h>
#include <semaphore.h>
using namespace std;
#define SIZE 1024
char buffer[SIZE];
void *thread_function(void *arg);
pthread_mutex_t mutex;
int main()
{
int res;
pthread_t ThreadID;
void* ThreadResult;
res = pthread_mutex_init(&mutex, NULL);
if (res != 0)
{
perror("MUTEX INIT FAILED!");
exit(EXIT_FAILURE);
}
res = pthread_create(&ThreadID, NULL, thread_function, NULL);
if (res != 0)
{
perror("Thread Create Failed!");
exit(EXIT_FAILURE);
}
printf("ThreadID:%d\n", ThreadID);
while(1)
{
pthread_mutex_lock(&mutex);
scanf("%s", buffer);
pthread_mutex_unlock(&mutex);
if (strncmp("end", buffer, 3) == 0)
{
break;
}
sleep(1);
}
res = pthread_join(ThreadID, &ThreadResult);
if (res != 0)
{
perror("Thread Join Failed");
exit(EXIT_FAILURE);
}
printf("Thread join\n");
pthread_mutex_destroy(&mutex);
return(EXIT_SUCCESS);
}
void *thread_function(void *arg)
{
sleep(1);
while(1)
{
pthread_mutex_lock(&mutex);
printf("you input %d \n", strlen(buffer));
pthread_mutex_unlock(&mutex);
if (strncmp("end", buffer, 3) == 0)
{
break;
}
sleep(1);
}
pthread_exit(NULL);
}
- Linux 线程与互斥锁的使用
- Linux 线程通信与pthread_cond_wait()的使用
- Linux线程的使用
- Linux下通用线程池的创建与使用[ZT]
- Linux下通用线程池的创建与使用
- Linux下通用线程池的创建与使用
- Linux下通用线程池的创建与使用(C++)
- Linux下通用线程池的创建与使用
- Linux下通用线程池的创建与使用
- 【转载】Linux下通用线程池的创建与使用
- Linux下通用线程池的创建与使用 C++
- Linux下通用线程池的创建与使用
- Linux下通用线程池的创建与使用(ZZ)
- Linux下通用线程池的创建与使用
- Linux下通用线程池的创建与使用
- Linux下通用线程池的创建与使用
- Linux下通用线程池的创建与使用
- Linux下通用线程池的创建与使用 .
- uCOS任务堆栈的深入分析
- 参与Internet
- ADO执行多条sql语句
- pb7转pb9
- 浪涌保护器OVR BT2 3N-70-440s P TS
- Linux 线程与互斥锁的使用
- 前端 UI 库 OperaMasks–UI 开发团队专访
- 考据党伤不起 - 东京首都大学发表《新世纪福音战士: Q》解说
- java编程之网络通信
- 标志位寄存器的说明
- 看了极光推送技术原理的几点思考
- MINA2.0用户手册中文版--第二章 第三节 TCP客户端实例
- 2012年11月26日二元网开奖数据提取vfp代码
- 像外行一样思考,像专家一样实践