易截截图软件、单文件、免安装、纯绿色、仅160KB

linux C多线程程序问题

linux C 里面的thread_create()函数在创建一个新的线程的时候只允许传递一个void*格式的参数arg 给线程的start_route,那如果我新创建的线程要处理多个参数。怎么办呢?我想了几个办法如下,清各位指点一下:
1、创建一个结构体把参数都打包装进去,再传递给start_route,不知道行不行的通。
2、把要处理的参数在main()函数外面声明成全局变量。

这些都是我的猜想,不知道通用的或者规范的做法是怎样的阿,还望各位指点!
1 方法应该很常用吧。比如windows 建立窗口时候,createWindow 函数的lpParam就类似,也是要传递一个结构体给窗口函数,但lpParam 本身就是个void*指针

1.当然可以
2.线程与进程的一大不同就是共享全局,这也是选择线程而不是进程的重要参考

t-bag说的好!回复内容太短了


全局变量吧,不过注意加volatile

创建结构体,把结构体当成参数。这个办法可行,我实验过。

推荐使用方法1吧,我一般都是用结构体

我觉得还是根据你的程序功能来做,
如果你传递的参数是一次性的,以后不再用到,那就用结构
如果在程序运行过程中,这些参数要变化,与其它线程交互,则用全局变量
不同的方法合适不同的需求

“创建一个结构体把参数都打包装进去,再传递给start_route” 一般都是这么用的

学习啦.
两种都得实验下.

全局和结构体都可以,建议结构体



用结构体好,比较反感全局变量
不短了


相关问答:

linux环境下gethostbyname函数问题 - C/C++ / C语言

写了个测试程序如下
   
  struct hostent *hp; 
char AlarmDevIP[20];  
  int x2;

hp = gethostbyname("www.google.com");
if (hp)
{ ......

execl怎么调用java程序 - C/C++ / C语言

如题,C/C++中的execl怎么调用写好的java程序,
execl("/opt/java1.5/bin/java","MyClass",NULL);
这样的不行哦。

不会.

运行java程序
找工具查看一下那个程序的命令行

搜索下:jni ......

C/S项目架构设计----求助 - Java / Java SE

本人正在用Java做一个C/S架构的项目, 
可是由于项目比较大,前期对架构的设计尤其重要,因为后期可能随时会加个功能或者去掉某些功能。 
所以特地寻求如何设计C/S的架构使程序更加面向对象更加易于维 ......

[HJ_34] 在HTML网页下,用JS 打开LINUX下的记事本

如题,在WINDOWS底下的CODE会,但在LINUX下不知道如何实现,JS的代码应该是不一样的。 求教。

分不够再加。

http://topic.csdn.net/u/20100113/08/17ba1e71-4c33-43f6-91a5-0e031c86e5ed.html
linux ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号