189 8069 5689

c语言函数线程调用函数 c语言线程变量

C语言线程函数参数问题

·线程创建

网站建设哪家好,找创新互联!专注于网页设计、网站建设、微信开发、小程序定制开发、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了永年免费建站欢迎大家使用!

函数原型:int pthread_create(pthread_t *restrict tidp,const pthread_attr_t *restrict attr,void *(*start_rtn)(void),void *restrict arg);

返回值:若是成功建立线程返回0,否则返回错误的编号。

形式参数:pthread_t *restrict tidp要创建的线程的线程id指针;

const pthread_attr_t *restrict attr创建线程时的线程属性;

void* (start_rtn)(void)返回值是void类型的指针函数;

void *restrict arg start_rtn的形参。 =====这个地方就可以传参数,

注意,这个地方是个指针,要想传多个参数,可以定义一个结构体,把要传的参数包起来,传结构体的地址就ok

C语言调用函数时会为函数分配自己的函数空间吗?

C语言每一次函数调用,编译器都会为这个函数调用分配一段空间,这段空间用来存放该函数中的所有局部变量和调用其它函数时需要传递的参数的副本。每一次调用这个函数,这段空间都会重新分配,函数返回后这段空间就被释放了,所以重复调用多少次都不会影响的。所有的这些函数调用时候分配的内存都是在线程的栈上的。

顺便说一下,我觉得楼上的回答是不对的: 每个线程都只会访问自己调用的函数中的局部变量的,访问局部变量是不会存在多线程问题的。会存在多线程问题的肯定不是局部变量,有可能是局部变量指向的其它可共享的对象(例如:堆对象......),或者在函数中访问了全局对象,类的成员变量等,这些并不是局部变量。

C语言源程序中其他函数也能调用main()函数吗

一个main函数对应一个线程,对于操作系统而言,是可以多线程的,就好像你同时打开两个应用程序一样,而两个线程之间要实现数据交流则要通过共享内存或者管道什么的。所以简单的理解是一个程序只能有一个线程或main函数,一个main函数里可以调用其他进程或者函数,而对于操作系统而言,没有mian函数的概念,但是可以给每个线程分配cpu资源,各个线程同时运行,但不能相互调用,线程是相互独立的。只能通过共享机制实现互相通信。


当前名称:c语言函数线程调用函数 c语言线程变量
分享链接:http://cdxtjz.cn/article/ddcdhig.html

其他资讯