//线程间的通信
#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 进程与线程六的更多相关文章

  1. Linux进程或线程绑定到CPU

    Linux进程或线程绑定到CPU 为了让程序拥有更好的性能,有时候需要将进程或线程绑定到特定的CPU,这样可以减少调度的开销和保护关键进程或线程. 进程绑定到CPU Linux提供一个接口,可以将进程 ...

  2. Linux进程和线程的比較

    进程与线程 參考:http://www.cnblogs.com/blueclue/archive/2010/07/16/1778855.html 首先比較Linux进程和线程的创建的差别,以此展开: ...

  3. Linux 进程、线程运行在指定CPU核上

    /******************************************************************************** * Linux 进程.线程运行在指定 ...

  4. linux进程、线程与cpu的亲和性(affinity)

    参考:http://www.cnblogs.com/wenqiang/p/6049978.html 最近的工作中对性能的要求比较高,下面简单做一下总结: 一.什么是cpu亲和性(affinity) C ...

  5. Linux进程与线程的区别

    进程与线程的区别,早已经成为了经典问题.自线程概念诞生起,关于这个问题的讨论就没有停止过.无论是初级程序员,还是资深专家,都应该考虑过这个问题,只是层次角度不同罢了.一般程序员而言,搞清楚二者的概念, ...

  6. linux进程与线程的区别【转】

    知乎上总结: "linux使用的1:1的线程模型,在内核中是不区分线程和进程的,都是可运行的任务而已.fork调用clone(最少的共享),pthread_create也是调用clone(最 ...

  7. Linux进程和线程

    一.进程产生的方式 1.描述进程的ID号通常叫做PID,即进程ID,PID的变量类型为pid_t. 2.getpid(void)返回当前进程的ID号,getppid(void)返回当前进程的父进程的I ...

  8. Linux -- 进程或线程独占CPU

    如果想让特定进程或线程独占某一或某些CPU,我们需要做三件事. 一,隔离CPU,避免其它线程run在被隔离的CPU上. 二,绑定所有的interrupts到非隔离的CPU上,避免被隔离的CPU收到in ...

  9. 操作系统:Linux进程与线程

    这里是一部分内容,还会做修改. 一:目的及内容 学习fork(),exec,pthread库函数的使用,阅读源码,分析fork,exec,pthread_create函数的机理 代码实现: 进程A创建 ...

随机推荐

  1. IDEA+weblogic部署运行项目

    前段时间再服务器上为了部署一个系统,一直存在各种问题,不过过程中倒是把weblogic的部署掌握地特别熟练,下面就一些主要步骤做个记录:1.自己用的是IDEA,所以打开项目之后需要设置src/main ...

  2. Win10桌面预览版14316更新内容大全

    下载更新: 安装之后右下角: Win10桌面预览版14316更新内容:       Windows上运行乌班图Bash:通过设置开启开发者模式,更新和安全>面向开发人员.然后搜索"Wi ...

  3. 数百个 HTML5 例子学习 HT 图形组件 – WebGL 3D 篇

    <数百个 HTML5 例子学习 HT 图形组件 – 拓扑图篇>一文让读者了解了 HT的 2D 拓扑图组件使用,本文将对 HT 的 3D 功能做个综合性的介绍,以便初学者可快速上手使用 HT ...

  4. 通过NPOI操作Excel

    最近在做的一个项目中需要生成Excel,通过学习使用NPOI实现了相关需求,写了一个简便操作的类,记录如下: public class NPOIHelperForExcel { #region exc ...

  5. 【MVVM Light】Messager的使用

    一.前言       在MVVM编程的模式中,有时候我们会遇到一个很尴尬的情况: 若干个xaml.cs都复用一个ViewModel,当ViewModel想传递一个特定的消息给某一个xaml.cs的时候 ...

  6. Entity Framework 教程——概述

    Entity Framework 基础 本教材将手把手教你使用entity framework,我们将使用entity framework 6.0和visual studio 2012. 以下表格是e ...

  7. 在公有云AZURE上部署私有云AZUREPACK以及WEBSITE CLOUD(三)

    (三) 搭建Windows Azure Pack环境 1安装SQL SERVER 2012 服务器 为简单起见,本例直接使用了Azure提供的具有SQLServer的Win2012 Server镜像来 ...

  8. ASP.NET的视图(Razor)循环产生html代码

    需要要视图中Razor语法,循环产生一些html代码. 产生后的html是这样的: <li data-transition="> <img src="~/Cont ...

  9. thinkphp怎么修改配置进入默认首页

    thinkphp文件夹下config 里面有个convention.php文件 里面有三个配置 'DEFAULT_MODULE' => 'Home', // 默认模块 'DEFAULT_CONT ...

  10. HTML DOM总结

    MDN的定义 文档对象模型 (DOM) 是 HTML 和 XML 文档的编程接口.它给文档(结构树)提供了一个结构化的表述并且定义了一种方式—程序可以对结构树进行访问,以改变文档的结构,样式和内容. ...