Linux 进程与线程六
//线程间的通信
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <unistd.h>
#include <pthread.h> /*线程1与控制线程通信方法1--全局变量*/
int g_num=; void *thread_run(void *arg)
{
//线程1被分离了,但最好不要使用pthread_join()函数接受,多线程下报错内存溢出
pthread_detach(pthread_self());
int *p=(int *)arg;
(*p)++;
g_num=;
/*线程1与控制线程通信方法2--pthread_exit()函数的参数*/
//pthread_exit(p);
//执行pthread_exit()函数后,线程会直接退出
printf("线程1退出了!\n");\
/*线程1与控制线程通信方法3--线程中return*/
return p;
} int main(int arg,char *args[])
{
/*
* 每个线程都拥有各自的栈内存,但是彼此之间的栈内存是可以互相访问,
* 比如在控制线程定义的变量,可以在线程1中访问
* 线程1中定义变量可能无法在控制线程访问,因为无法确定变量是否因为线程执行完毕被释放了
* */
int index=;
pthread_t thr1;
if(pthread_create(&thr1,NULL,thread_run,&index)!=)
{
printf("pthread_create() failed !\n");
return -;
}
//等待线程1
int *p=NULL;
pthread_join(thr1,(void **)&p);
printf("线程1的返回值%d\n",*p);
printf("控制线程的index=%d\n",index);
printf("g_num=%d\n",g_num);
return ;
}
//线程的并行执行
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <unistd.h>
#include <pthread.h> void *thread_run(void *arg)
{
//pthread_detach(pthread_self());
if (arg != NULL)
{
int *p = (int *) arg;
int i = ;
for (i = ; i < *p; i++)
{
printf("这是线程%d的第%d圈!\n", (int) pthread_self(), i);
sleep();
}
}
return NULL;
} int main(int arg, char *args[])
{
int i = ;
int num1 = ;
int num2 = ;
printf("请输入创建线程的个数:\n");
scanf("%d", &num1);
printf("请输入每个线程的圈数:\n");
scanf("%d", &num2);
pthread_t thrs[];
/*
* 多线程是并行运行的
* */
for (i = ; i < num1; i++)
{
if (pthread_create(&thrs[i], NULL, thread_run, &num2) != )
{
printf("pthread_create() failed !\n");
return -;
}
}
for (i = ; i < num1; i++)
{
/*如果没有pthread_join(),那么控制线程不会等待子线程,会直接退出*/
pthread_join(thrs[i],NULL);
}
return ;
}
Linux 进程与线程六的更多相关文章
- Linux进程或线程绑定到CPU
Linux进程或线程绑定到CPU 为了让程序拥有更好的性能,有时候需要将进程或线程绑定到特定的CPU,这样可以减少调度的开销和保护关键进程或线程. 进程绑定到CPU Linux提供一个接口,可以将进程 ...
- Linux进程和线程的比較
进程与线程 參考:http://www.cnblogs.com/blueclue/archive/2010/07/16/1778855.html 首先比較Linux进程和线程的创建的差别,以此展开: ...
- Linux 进程、线程运行在指定CPU核上
/******************************************************************************** * Linux 进程.线程运行在指定 ...
- linux进程、线程与cpu的亲和性(affinity)
参考:http://www.cnblogs.com/wenqiang/p/6049978.html 最近的工作中对性能的要求比较高,下面简单做一下总结: 一.什么是cpu亲和性(affinity) C ...
- Linux进程与线程的区别
进程与线程的区别,早已经成为了经典问题.自线程概念诞生起,关于这个问题的讨论就没有停止过.无论是初级程序员,还是资深专家,都应该考虑过这个问题,只是层次角度不同罢了.一般程序员而言,搞清楚二者的概念, ...
- linux进程与线程的区别【转】
知乎上总结: "linux使用的1:1的线程模型,在内核中是不区分线程和进程的,都是可运行的任务而已.fork调用clone(最少的共享),pthread_create也是调用clone(最 ...
- Linux进程和线程
一.进程产生的方式 1.描述进程的ID号通常叫做PID,即进程ID,PID的变量类型为pid_t. 2.getpid(void)返回当前进程的ID号,getppid(void)返回当前进程的父进程的I ...
- Linux -- 进程或线程独占CPU
如果想让特定进程或线程独占某一或某些CPU,我们需要做三件事. 一,隔离CPU,避免其它线程run在被隔离的CPU上. 二,绑定所有的interrupts到非隔离的CPU上,避免被隔离的CPU收到in ...
- 操作系统:Linux进程与线程
这里是一部分内容,还会做修改. 一:目的及内容 学习fork(),exec,pthread库函数的使用,阅读源码,分析fork,exec,pthread_create函数的机理 代码实现: 进程A创建 ...
随机推荐
- SQL实用
实用的SQL语句 行列互转 create table test(id int,name varchar(20),quarter int,profile int) insert into test ...
- 放弃安卓原生TimePicker,选择wheelView打造更漂亮的时间get,以及动态拉伸输入框布局,这些,这里都有!
最近公司要求的上线项目有这么一个需求,要写一个请假申请的页面,里面必须有请假开始时间,结束时间,还有一个请假原因. 于是想到时间选择嘛,官方不是有个DatePicker吗?额,是不是要DatePick ...
- 你真的会玩SQL吗?让人晕头转向的三值逻辑
你真的会玩SQL吗?系列目录 你真的会玩SQL吗?之逻辑查询处理阶段 你真的会玩SQL吗?和平大使 内连接.外连接 你真的会玩SQL吗?三范式.数据完整性 你真的会玩SQL吗?查询指定节点及其所有父节 ...
- 一个简单的webservice的demo(下)winform异步调用webservice
绕了一大圈,又开始接触winform的项目来了,虽然很小吧.写一个winform的异步调用webservice的demo,还是简单的. 一个简单的Webservice的demo,简单模拟服务 一个简单 ...
- MessageBox.Show()的各种用法
[函数] <整型> MessageBox(<字符串> Text, <字符串> Title, <整型> nType,MessageBoxIcon); [函 ...
- C# - 网络编程 之 Socket
命名空间 using System.Net; using System.Net.Socket; Socket类 初始化 public socket (AddressFamily addressFami ...
- C#实现微信开发前奏
不想废话,直接写了!因为是留给自己做随笔的,所以大神们看到别喷…… 1.必须有微信公众账号 2.你也可以申请测试微信号,链接给你 http://mp.weixin.qq.com/debug/cgi ...
- linux grep命令
linux grep命令1.作用Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来.grep全称是Global Regular Expressio ...
- SVNKit支持SSH连接
SVNKit这个开源工具,用于Java语言访问SVN库,咋看的时候很方便,其实坑特别多.我在这里只想跟大家说一句,如果你还没有用过,请不要在生产环境使用这个东西了,兼容性问题搞死你(替换方案是直接用s ...
- 【转】OpenCV 移植学习--EMCV
在Opencv论坛有好些这方面的帖子,主要看了一下几个牛人的帖子,比如论坛管理员于博士Shiqi Yu:(EMCV:可在DSP上运行的OpenCV)http://www.opencv.org.cn/f ...