传递参数的两种方法

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

  例子

  #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. QT5之三大重要窗体

    当创建项目时,会发现编辑器提供三个基类,分别为:QMainWindow.QWidget.QDialog,三个基类的区别说明如下.1.QMainWindowQMainWindow类提供一个有菜单条.锚接 ...

  2. dedecms搜索框写法

    <div class="bg_search"> <form id="forms" name="formsearch" ac ...

  3. Tsinsen A1493 城市规划(DP + CDQ分治 + NTT)

    题目 Source http://www.tsinsen.com/A1493 Description 刚刚解决完电力网络的问题, 阿狸又被领导的任务给难住了. 刚才说过, 阿狸的国家有n个城市, 现在 ...

  4. div内文字超出换行问题

    1.强制换行: div的样式加上: word-wrap:break-word;word-break:break-all; 2.在文字中间加入建议换行标志<wbr>可以每隔几个字符加一个,

  5. JavaScript使用封装

    基本封装方法 请看下面的例子: var Person = function(name,age){ this.name = name; this.age = age || "未填写" ...

  6. Selenium_等待页面加载完毕

    隐式等待 WebDriver driver = new FirefoxDriver(); driver.get("www.baidu.com"); driver.manage(). ...

  7. js中this的用法

    经过近几周的模拟面试题,我查询了一些资料,今天就来说说,在js中this的用法吧.方法有四:第一,用作全局变量,第二,用作表该对象,第三,用作构造函数,第四,用作call和applay

  8. Codeforces Round #361 (Div. 2) D

    D - Friends and Subsequences Description Mike and !Mike are old childhood rivals, they are opposite ...

  9. mysql外键添加error1215

    在mysql创建表外键的过程中,由于操作不当,会提示cannot add foreign key constraint的错误. 造成此错误可能的原因如下: 1.数据类型不匹配,外键与其相关联的键必须数 ...

  10. H5文件操作api--持续完善中

    Drop Here <input type="file" onchange="upload(this)" /></p> <div ...