linux下的C\\C++多进程多线程编程实例详解
作者:lqh 时间:2021-01-08 17:26:07
linux下的C\C++多进程多线程编程实例详解
1、多进程编程
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
int main()
{
pid_t child_pid;
/* 创建一个子进程 */
child_pid = fork();
if(child_pid == 0)
{
printf("child pid\n");
exit(0);
}
else
{
printf("father pid\n");
sleep(60);
}
return 0;
}
2、多线程编程
#include <stdio.h>
#include <pthread.h>
struct char_print_params
{
char character;
int count;
};
void *char_print(void *parameters)
{
struct char_print_params *p = (struct char_print_params *)parameters;
int i;
for(i = 0; i < p->count; i++)
{
fputc(p->character,stderr);
}
return NULL;
}
int main()
{
pthread_t thread1_id;
pthread_t thread2_id;
struct char_print_params thread1_args;
struct char_print_params thread2_args;
thread1_args.character = 'x';
thread1_args.count = 3000;
pthread_create(&thread1_id, NULL, &char_print, &thread1_args);
thread2_args.character = 'o';
thread2_args.count = 2000;
pthread_create(&thread2_id, NULL, &char_print, &thread2_args);
pthread_join(thread1_id, NULL);
pthread_join(thread2_id, NULL);
return 0;
}
3、线程同步与互斥
1)、互斥
pthread_mutex_t mutex;
pthread_mutex_init(&mutex, NULL);
/*也可以用下面的方式初始化*/
pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
pthread_mutex_lock(&mutex);
/* 互斥 */
thread_flag = value;
pthread_mutex_unlock(&mutex);
2)、条件变量
int thread_flag = 0;
pthread_mutex_t mutex;
pthread_cond_t thread_flag_cv;\
void init_flag()
{
pthread_mutex_init(&mutex, NULL);
pthread_cond_init(&thread_flag_cv, NULL);
thread_flag = 0;
}
void *thread_function(void *thread_flag)
{
while(1)
{
pthread_mutex_lock(&mutex);
while(thread_flag != 0 )
{
pthread_cond_wait(&thread_flag_cv, &mutex);
}
pthread_mutex_unlock(&mutex);
do_work();
}
return NULL;
}
void set_thread_flag(int flag_value)
{
pthread_mutex_lock(&mutex);
thread_flag = flag_value;
pthread_cond_signal(&thread_flag_cv);
pthread_mutex_unlock(&mutex);
}
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
来源:http://blog.csdn.net/nyist327/article/details/44958585
标签:linux,多进程,多线程
0
投稿
猜你喜欢
详解Apache SkyWalking 告警配置指南
2023-07-10 07:08:34
网站所有页面都消失 原因分析及解决办法
2008-12-20 13:33:00
VMware下配置Linux系统局域网和外网访问图文教程
2023-09-03 10:50:08
基于Sendmail和Perl的邮件附件过滤系统
2008-01-09 10:33:00
3个月时间,流量1万 收录3万 一个中专生的建站经历
2007-08-05 18:12:00
如何减少和避免Google Adsense无效点击
2007-09-21 14:24:00
PHPWind v7.3.2 ie6下颜色选择框定位不准
2009-05-31 17:02:00
Linux修改用户所属组的方法
2023-11-02 23:37:23
逐步排查 层层递进 解决IIS服务器报错
2010-05-04 17:59:00
淘宝网:淘宝定位成C2B 淘宝商城成长最快
2009-10-27 15:43:00
如何利用Docker容器实现代理转发与数据备份详解
2023-08-17 10:29:04
linux下安装配置svn独立服务器的步骤分享
2023-10-19 14:20:31
网页游戏联合 掀起站长盈利新热潮
2008-08-07 12:13:00
通过googleAdSense赚取美元这4年
2008-11-04 13:18:00
vmware12中安装 RedHat RHEL7.2系统的详细步骤(图文)
2023-10-14 02:03:08
五个最佳FTP客户端软件工具[月光翻译]
2008-12-04 13:22:00
Hadoop streaming详细介绍
2023-10-12 04:43:50
谷歌趋势和百度指数对比
2008-06-21 16:36:00
我也谈高校论坛建设经验,同样适合各大类BBS
2007-08-05 12:46:00
如何查询网站的反向链接数量
2007-10-19 13:34:00