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” 一般都是这么用的
学习啦.
两种都得实验下.
全局和结构体都可以,建议结构体
用结构体好,比较反感全局变量
不短了
相关问答:
如题,C/C++中的execl怎么调用写好的java程序,
execl("/opt/java1.5/bin/java","MyClass",NULL);
这样的不行哦。
不会.
运行java程序
找工具查看一下那个程序的命令行
搜索下:jni ......
分别用结构化方法和面向对象方法编程实现下面要求:
对Circle和Rectangle实现以下功能Center,Move,Rotate,Print.
自己先订以下,这是一个刚学习计算机的人问我的
学习,看看
继续顶哦
学习了。
go o ......
引用内容vsking 2009-12-25 22:56:52
现在是win2008和iis8的时代了,不要还停留在iis5时代,win2008被评为十佳操作系统之首不是偶然的,你要是..
我的问题是:
最近想买个服务器,看了dell上的系统定制选择,一些 ......
如题,在WINDOWS底下的CODE会,但在LINUX下不知道如何实现,JS的代码应该是不一样的。 求教。
分不够再加。
http://topic.csdn.net/u/20100113/08/17ba1e71-4c33-43f6-91a5-0e031c86e5ed.html
linux ......
VC6.0不能用,VS系列太大,能不能推荐几款小巧的C/C++的IDE
没有。楼下的垃圾回答
http://topic.csdn.net/u/20100105/09/c854cc79-c8b0-4c1a-a8cf-9ab001ab13a5.html?76698
VC6.0我windows7能用
其他的
DEV ......