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

#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. TypeError: 'encoding' is an invalid keyword argument for this function 解决Python 2.7

    在python2.7中这样调用代码 open('file/name.txt','r',encoding= 'utf-8').read() 会出现 TypeError: 'encoding' is an ...

  2. Shooting Bricks题解

    题目传送门 以后我绝对不会一直磕着一道题磕几个小时了...感觉还是自己节奏出了问题,不知为啥感觉有点小慌... 算了,其实再回头仔细看一下这个题dp的思路还是比较好想出来的,打代码之前一定要做好足够的 ...

  3. LeetCode88 合并有序数组

    1. 这道题为简单题目,但是还有需要好好思考的 2. 首先不能使用额外数组合并,不然就没得后文了 3. nums1后面有0填充,且填充数量正好是n,整个数组大小即m+n能够容纳合并后的数据 4.既然要 ...

  4. uni-app APP端隐藏导航栏自定义按钮

    话不多说,上代码 // #ifdef APP-PLUS var webView = this.$mp.page.$getAppWebview(); // 修改buttons webView.setTi ...

  5. [python]基于windows搭建django项目

    1.首先我的环境用到的库版本如下,若下载直接pip即可 pip3 install Django==2.0.6pip3 install djangorestframework==3.8.2pip3 in ...

  6. Python 匿名函数用法和return语句

    匿名函数用法1.什么是匿名函数    函数定义过程中,没有给定名称函数,python中用lambda表达式创建匿名函数    lambda只是一个表达式,函数体比def简单    lambda主题是一 ...

  7. nrf52832蓝牙开发踩过的坑

    接触nrf52832芯片已经有一段时间了,记录我踩过的坑.这些坑大多都补回来了,愿后来的开发者没有坑~ 先来点开胃小菜 一.环境问题 安装离线包遇到的错误--svdconv exited with a ...

  8. java中static关键字的解析

    静态的特点: A:随着类的加载而加载 B:优先于对象而存在 C:静态是被所有对象共享的数据 这也是我们来判断是否使用静态的标准 D:静态的出现,让我们的调用方式多了一种 类名.静态的内容 非静态的内容 ...

  9. [bzoj1109]堆积木

    用f[i]表示前i个数,i必须被贡献的答案,考虑转移,枚举下一个被贡献的数j,那么j需要满足:1.$j<i$:2.$a[j]<a[i]$:3.$a[i]-(i-j+1)\le a[j]$, ...

  10. C语言下的Led灯

    1. 设计思想 1.1 设置处理器模式 设置sp啥的汇编要先进入SVC模式,超级管理员特权模式,这样就可以访问所有寄存器了,需要用到cpsr寄存器 0到4位要设置svc模式10011 = 0x13, ...