传递参数的两种方法

  线程函数只有一个参数的情况:直接定义一个变量通过应用传给线程函数。

  例子

  #include

  #include

  using namespace std;

  pthread_t thread;

  void * fn(void *arg)

  {

  int i = *(int *)arg;

  cout<<"i = "<<i<<endl;

  return ((void *)0);

  }

  int main()

  {

  int err1;

  int i=10;

  err1 = pthread_create(&thread, NULL, fn, &i);

  pthread_join(thread, NULL);

  }

  操作系统以进程为单位分配资源。

  线程是执行单位,线程函数有多个参数的情况:这种情况就必须申明一个结构体来包含所有的参数,然后在传入线程函数。

  具体请查看代码:

  Mularg.c

  #include

  #include

  #include

  #include

  typedef struct arg_struct ARG ;

  struct arg_struct {

  char name[10] ;

  int age ;

  float weight ;

  } ;

  void * thfn ( void * arg )

  {

  ARG * p = (ARG *) arg ;

  printf( " name is : %s , age is : % d , weight is : %f \ n " , p->name , p->age , p->weight ) ;

  return NULL ;

  }

  int main(int argc , char *argv [ ] )

  {

  pthread_t tid ;

  ARG arg ;

  int err ;

  strcpy ( arg.name , " zhanggd " ) ;

  arg.age = 26 ;

  arg.weight = 70 ;

  err = pthread_create ( &tid , NULL , thfn , (void *) & arg ) ;

  if( err != 0 ) {

  printf( " can’ˉt create thread %s\n", strerror(err) ) ;

  exit(1);

  }

  return 0 ;

  }

  程序执行结果:

原文链接:http://www.maiziedu.com/wiki/process/pass/

Linux线程体传递参数的方法详解的更多相关文章

  1. java多线程并发(二)--线程的生命周期及方法详解

    上篇随笔介绍了线程的相关基础知识以及新启线程的几种方法,本片将继续介绍线程的生命周期及方法详解. 一.线程的生命周期 在Thread代码中,线程的状态被分为6种 public enum State { ...

  2. linux useradd(adduser)命令参数及用法详解(linux创建新用户命令)

    linux useradd(adduser)命令参数及用法详解(linux创建新用户命令) useradd可用来建立用户帐号.帐号建好之后,再用passwd设定帐号的密码.而可用userdel删除帐号 ...

  3. Linux常用命令last的使用方法详解

    http://www.jb51.net/article/120140.htm 最近在学习linux命令,学习到了last命令,发现很多同学对last命令不是很熟悉,last命令的功能列出目前与过去登入 ...

  4. PyTorch常用参数初始化方法详解

    1. 均匀分布 torch.nn.init.uniform_(tensor, a=0, b=1) 从均匀分布U(a, b)中采样,初始化张量. 参数: tensor - 需要填充的张量 a - 均匀分 ...

  5. 【转】Linux中history历史命令使用方法详解

    原文网址:http://os.51cto.com/art/201205/335040.htm 当你在玩Linux的时候,如果你经常使用命令行来控制你的Linux系统,那么有效地使用命令历史机制将会使效 ...

  6. Linux中history历史命令使用方法详解

    当你在玩Linux的时候,如果你经常使用命令行来控制你的Linux系统,那么有效地使用命令历史机制将会使效率获得极大提升.事实上,一旦你掌 握了我在下面给出的15个有关Linux history历史命 ...

  7. linux的grep命令参数全拼详解

    今天为了查找文件中某段字符,找了好久,最后成功使用指令: find . -name "*.cpp" |xargs grep -in “get_itemInfo” | grep -v ...

  8. Linux系统木马后门查杀方法详解

    木马和后门的查杀是系统管理员一项长期需要坚持的工作,切不可掉以轻心.以下从几个方面在说明Linux系统环境安排配置防范和木马后门查杀的方法: 一.Web Server(以Nginx为例) 1.为防止跨 ...

  9. Linux下find命令参数及用法详解

    由于find具有强大的功能,所以它的选项也很多,其中大部分选项都值得我们花时间来了解一下.即使系统中含有网络文件系统( NFS),find命令在该文件系统中同样有效,只你具有相应的权限.在运行一个非常 ...

随机推荐

  1. 前端工具 & git笔记

    git diff    (working dir to INDEX ) git diff --cached (INDEX to HEAD) git diff  HEAD  (working dir t ...

  2. 『AngularJS』$location 服务

    项目中关于 $location的用法 简介 $location服务解析在浏览器地址栏中的URL(基于window.location)并且让URL在你的应用中可用.改变在地址栏中的URL会作用到$loc ...

  3. mac osx Forbidden You don't have permission to access / on this server解决方法

    (1)首先查看*.conf 是否有读写权限,如果没有要将文件赋予读写权限,比如 localhost.conf (2)再查看/Users/username/Sites/localhost/文件夹是否有i ...

  4. sass sourcemap详细使用

    新发布的Sass 3.3版本,将Source Maps正式纳入了Sass中.这也成为Sass新版本的一大亮点,一大新功能.让广大Sass爱好者可以直接在浏览器中更容易调试自己的代码和Debug相关操作 ...

  5. python中非关键字可变长参数和关键字变量参数的区别

    #非关键字可变长参数 def add(*arg):    return type(arg) print add() #打印结果 <type 'tuple'> #关键字变量参数 def ab ...

  6. Swap Nodes in Pairs

    Given a linked list, swap every two adjacent nodes and return its head. For example, Given 1->2-& ...

  7. 浏览器兼容性-JS篇

    总结一下平时遇到的浏览器兼容性问题,本篇关于JS. 1.事件绑定 兼容写法: function add(obj,event){ if (obj.addEventListener) { obj.addE ...

  8. (转)Vsdocman7.2 注册版

    Vsdocman是一个优秀的.NET源代码注释编写工具,方便的以GUI的方式设计.NET源代码的注释.我们只是大自然的搬运工:http://download.csdn.net/detail/iamyg ...

  9. *HDU 1115 计算几何

    Lifting the Stone Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others ...

  10. What's the difference between a stub and mock?

    I believe the biggest distinction is that a stub you have already written with predetermined behavio ...