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创建 ...
随机推荐
- 搭建了个人的github.io博客
地址:http://www.shutu.tech 说明: 基于github + hexo简易搭建的个人博客,用于收藏经典博文及技术文章,也会用于个人的技术成长记录.我是看到这篇文章搭建的:http:/ ...
- JavaScript : 浅讲ajax
1.ajax入门案例 1.1 搭建Web环境 ajax对于各位来说,应该都不陌生,正因为ajax的产生,导致前台页面和服务器之间的数据传输变得非常容易,同时还可以实现页面的局部刷新.通过在后台与服务器 ...
- 给jquery-validation插件添加控件的验证回调方法
jquery-validation.js在前端验证中使用起来非常方便,提供的功能基本上能满足大部分验证需求,例如:1.内置了很多常用的验证方法:2.可以自定义错误显示信息:3.可以自定义错误显示位置: ...
- Debug Databinding Issues in WPF
DataBinding is one of the most powerful features in WPF. But because it resolves the bindings at run ...
- C# http
minihttpd minihttpd:HTTPWeb服务器库 https://www.codeproject.com/articles/11342/minihttpd-an-http-web-ser ...
- 浏览器自动刷新——基于Nodejs的Gulp LiveReload与VisualStudio完美结合。
本文版权桂博客园和作者吴双共同所有,转载和爬虫请注明原文地址 http://www.cnblogs.com/tdws/p/6016055.html 写在前面 大家好我是博客园的蜗牛,博客园的蜗牛就是我 ...
- DataTable的orderby有关问题
在网上找了一个在后台重新对DataTable排序的方法(之所以不在数据库是因为我生成的是报表,写了存储过程用的表变量,order by也要用变量,死活拼不起来,sql能力没过关,动态sql也试了) s ...
- java代码解压zip文件
import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.Inp ...
- python爬虫成长之路(一):抓取证券之星的股票数据
获取数据是数据分析中必不可少的一部分,而网络爬虫是是获取数据的一个重要渠道之一.鉴于此,我拾起了Python这把利器,开启了网络爬虫之路. 本篇使用的版本为python3.5,意在抓取证券之星上当天所 ...
- 今天思考一个问题,PHP const和static的区别
static关键字在类中是,描述一个成员是静态的,static能够限制外部的访问,因为static后的成员是属于类的,是不属于任何对象实例,其他类是无法访问的,只对类的实例共享,能一定程序对该成员尽心 ...