#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_destroy(pthread_mutex_t *mutex);
、#include <unistd.h>
#include <pthread.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
//声明线程函数和互斥量
void* thread_func(void *msg);
pthread_mutex_t mutex;
#define MSG_SIZE 512
int main()
{
int res = -1;
pthread_t thread;
void *thread_result = NULL;
char msg[MSG_SIZE] = {' '};
//初始化互斥量,使用默认的互斥量属性
res = pthread_mutex_init(&mutex, NULL);
if(res != 0)
{
perror("pthread_mutex_init failedn");
exit(EXIT_FAILURE);
}
//创建子线程,并把msg作为线程函数的参数传递给thread_func
res = pthread_create(&thread, NULL, thread_func, msg);
if(res != 0)
{
perror("pthread_create failedn");
exit(EXIT_FAILURE);
}
//输入字符串,以串‘end'结束
printf("Input some test. Enter 'end' to finishn");
//把互斥量mutex加锁,以确保同一时间只有该线程可以访问msg中的数据
pthread_mutex_lock(&mutex);
while(strcmp("endn", msg) != 0)
{
if(strncmp("TEST", msg, 4) == 0)
{
strcpy(msg, "copy_datan");
}
else
{
fgets(msg, MSG_SIZE, stdin);
}
//把互斥量mutex解锁,让其他的线程可以访问msg中的数据
pthread_mutex_unlock(&mutex);
sleep(1);//休眠1秒再继续循环,让其他线程有执行的机会
pthread_mutex_lock(&mutex);
}
pthread_mutex_unlock(&mutex);
printf("nWaiting for thread finish...n");
//等待子线程结束
res = pthread_join(thread, &thread_result);
if(res != 0)
{
perror("pthread_join failedn");
exit(EXIT_FAILURE);
}
printf("Thread joinedn");
//清理互斥量
pthread_mutex_destroy(&mutex);
exit(EXIT_SUCCESS);
}
void* thread_func(void *msg)
{
int i = 0;
char *ptr = msg;
sleep(1);
//把互斥量mutex加锁,以确保同一时间只有该线程可以访问msg中的数据
pthread_mutex_lock(&mutex);
while(strcmp("endn", msg) != 0)
{
//把小写字母变成大写
for(i = 0; ptr[i] != ' '; ++i)
{
if(ptr[i] >= 'a' && ptr[i] <='z')
{
ptr[i] -= 'a' - 'A';
}
}
printf("You input %d charactersn", i-1);
printf("To uppercase: %sn", ptr);
//把互斥量mutex解锁,让其他的线程可以访问msg中的数据
pthread_mutex_unlock(&mutex);
sleep(1);//休眠1秒再继续循环,让其他线程有执行的机会
pthread_mutex_lock(&mutex);
}
pthread_mutex_unlock(&mutex);
//退出线程
pthread_exit(NULL);
}
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有