由于主线程已经开始跑了,次线程还在使用串口打印需要一点时间,因此打印的都是重复的。

#include "pthread.h"
#include "stdio.h"
#include "stdlib.h"
static void * thread_function(void * arg )
{
// printf("%s %d\n ",__FUNCTION__ , (int)arg ); printf("%s %d\n ",__FUNCTION__ , *(int*)arg );
while(1); return NULL;
} int main(int argc, const char *argv[])
{
pthread_t tid[10];
int i;
for(i = 0; i<10 ; i++) {
//pthread_create(&tid[i] ,NULL, thread_function ,(void *) i );传送值的方法
pthread_create(&tid[i] ,NULL, thread_function ,(void *) &i ); 传送地址的方法
}
while(1)
{
//printf("%s\n",__FUNCTION__);
//sleep(1);
}
return 0;
}

  

1 查看线程的指令ps -eLf | grep thread ;

2 线程不是先创建的先执行,是根据内核来决定的先执行那个。

3 可以在创建线程的时候增加延时,让每个线程依次执行,这样子大的log就是顺序执行的。

看某个进程的资源

top -p 4081

线程回收,pthread_join ; 只调用pthread_exit 是不行的,只是退出线程,但是大小是没有变化的。

pthread_join 是阻塞函数,因此可以将线程改为pthread_detach 改为detach属性,结束后自动释放资源的。

20s之后线程的资源变小

#include "pthread.h"
#include "stdio.h"
#include "stdlib.h"
static void * thread_function(void * arg )
{
printf("%s %d\n ",__FUNCTION__ , (int)arg ); //printf("%s %d\n ",__FUNCTION__ , *(int*)arg );
sleep(20);
pthread_exit("I quit\n");
while(1); return NULL;
} int main(int argc, const char *argv[])
{
pthread_t tid[10];
int i;
for(i = 0; i<10 ; i++) {
pthread_create(&tid[i] ,NULL, thread_function ,(void *) i );
pthread_detach(tid[i]);
//pthread_create(&tid[i] ,NULL, thread_function ,(void *) &i );
//sleep(1); }

// pthread_join 是阻塞函数,因此可以将线程改为pthread_detach 改为detach属性,
pthread_exit结束后自动释放资源的。
/* int errno ;
for(i = 0; i<10 ; i++)
{
  errno = pthread_join(tid[i] ,NULL);
  if(errno == -1 )
  {
    perror("pthread_exit"); return -1 ;
  }
} */

  while(1)
  { //printf("%s\n",__FUNCTION__); //sleep(1);
  }

  return 0;
}

linux 线程函数小结的更多相关文章

  1. linux 线程函数大全

    Technorati 标签: Linux thread 索引: 1.创建线程pthread_create 2.等待线程结束pthread_join 3.分离线程pthread_detach 4.创建线 ...

  2. [笔记]linux下和windows下的 创建线程函数

    linux下和windows下的 创建线程函数 #ifdef __GNUC__ //Linux #include <pthread.h> #define CreateThreadEx(ti ...

  3. 【Linux 线程】常用线程函数复习《二》

    1.函数pthread_join /************************************************************************* > Fil ...

  4. 【Linux 线程】常用线程函数复习《一》

    1.pthread_create以及pthread_self函数 /****************************************************************** ...

  5. Linux线程基础函数

    1. 线程标识: (1) 比较两个线程ID: #include <pthread.h> int pthread_equal(pthread_t tid1, pthread_t tid2); ...

  6. Linux多线程编程小结

     Linux多线程编程小结 前一段时间由于开题的事情一直耽搁了我搞Linux的进度,搞的我之前学的东西都遗忘了,非常烦躁的说,如今抽个时间把之前所学的做个小节.文章内容主要总结于<Linux程序 ...

  7. [转载]Linux 线程实现机制分析

    本文转自http://www.ibm.com/developerworks/cn/linux/kernel/l-thread/ 支持原创.尊重原创,分享知识! 自从多线程编程的概念出现在 Linux ...

  8. linux线程的实现

    首先从OS设计原理上阐明三种线程:内核线程.轻量级进程.用户线程 内核线程 内核线程就是内核的分身,一个分身可以处理一件特定事情.这在处理异步事件如异步IO时特别有用.内核线程的使用是廉价的,唯一使用 ...

  9. linux线程的实现【转】

    转自:http://www.cnblogs.com/zhaoyl/p/3620204.html 首先从OS设计原理上阐明三种线程:内核线程.轻量级进程.用户线程 内核线程 内核线程就是内核的分身,一个 ...

随机推荐

  1. STM32必学的时钟系统

    STM32的时钟系统 相较于51单片机,stm32的时钟系统可以说是非常复杂了,我们现在看下面的一张图:   上图说明了时钟的走向,是从左至右的从时钟源一步步的分配给外设时钟.需要注意的是,上图左侧一 ...

  2. linux shell 基本语法之快速上手shell编程

    从程序员的角度来看, Shell本身是一种用C语言编写的程序,从用户的角度来看,Shell是用户与Linux操作系统沟通的桥梁.用户既可以输入命令执行,又可以利用 Shell脚本编程,完成更加复杂的操 ...

  3. Linux C语言链表你学会了吗?

    链表是一种常见的基础数据结构,结构体指针在这里得到了充分的利用.链表可以动态的进行存储分配,也就是说,链表是一个功能极为强大的数组,他可以在节点中定义多种数据类型,还可以根据需要随意增添,删除,插入节 ...

  4. 算法:拉丁方阵(Latin Square)

    拉丁方阵(英语:Latin square)是一种 n × n 的方阵,在这种 n × n 的方阵里,恰有 n 种不同的元素,每一种不同的元素在同一行或同一列里只出现一次.以下是两个拉丁方阵举例: 拉丁 ...

  5. Hadoop的HA(ZooKeeper)安装与部署

    非HA的安装步骤 https://www.cnblogs.com/live41/p/15467263.html 一.部署设定 1.服务器 c1   192.168.100.105    zk.name ...

  6. LOTO虚拟示波器软件功能演示之——FIR数字滤波

    本文章介绍一下LOTO示波器新出的功能--FIR数字滤波的功能. 在此之前我们先来了解一下带通滤波和带阻滤波.我们都知道每个信号是不同频率不同幅值正弦波的线性叠加,为了方便直接得观察到这种现象,就有了 ...

  7. java 三大特性_继承、封装、多态_day005

    一.继承: java的三大特性之一.两个类之间通过extends关键字来描述父子关系,子类便可拥有父类的公共方法和公共属性.子类可以继承父类的方法和属性,子类也可以自己定义没有的方法或者通过覆盖父类的 ...

  8. linux下安装Git并生成SSH key

    系统:contens7.4 1.下载源码解压 wget https://github.com/git/git/archive/v2.3.0.zip unzip v2.3.0.zip cd git-2. ...

  9. Go语言核心36讲(Go语言实战与应用二)--学习笔记

    24 | 测试的基本规则和流程(下) Go 语言是一门很重视程序测试的编程语言,所以在上一篇中,我与你再三强调了程序测试的重要性,同时,也介绍了关于go test命令的基本规则和主要流程的内容.今天我 ...

  10. 2020 天翼杯 部分wp

    天翼杯 呜呜呜呜 是我太菜了 Web APItest 源码 const express = require("express"); const cors = require(&qu ...