c语言程序设计网站,艺术品商城网站开发,四川省城乡和建设厅网站,手机app界面设计尺寸0.线程特点
#xff08;1#xff09;.线程共享资源#xff1a;一个进程下的多个线程共享以下资源 可执行的指令 静态数据 进程中打开的文件描述符 当前工作目录 用户ID 用户组ID
#xff08;2#xff09;.线程私有资源#xff1a; 线程ID PC(程序计数器#xff09;和相…0.线程特点
1.线程共享资源一个进程下的多个线程共享以下资源 可执行的指令 静态数据 进程中打开的文件描述符 当前工作目录 用户ID 用户组ID
2.线程私有资源 线程ID PC(程序计数器和相关寄存器 堆栈 错误号errno 优先级 执行状态和属性
一.C函数创建线程、回收线程、结束线程
1.创建线程 - pthread_create
功能 创建一个线程成功时返回0失败时返回错误码errno
参数 thread: 线程对象 attr : 线程属性NULL则表示默认属性 void*(*routine)(void*)线程执行的函数 arg 传递给线程执行函数的参数
int pthread_create(pthread_t *thread,const pthread_attr_t *attr,void*(*routine)(void*),void *arg);2.线程回收 - pthread_join
功能 回收线程资源成功时返回0失败返回错误码。 调用线程阻塞直到pthread结束
参数 thread : 线程对象指定要回收的线程 retval : 接收线程返回值的地址
int pthread_join(pthread_t thread,void **retval); 3.线程结束 - pthread_exit
功能 结束当前的线程,释放该线程的私有资源。
参数 retval: 可被其他线程通过 pthread_join 获取。
void pthread_exit(void *retval); 4.线程创建、回收、结束代码示例
#include stdio.h
#include stdint.h
#include sys/types.h
#include unistd.h
#include sys/wait.h
#include pthread.h
#include stdlib.h
#include string.hchar message[32] Hello World;
void *thread_func(void *arg);int main()
{pthread_t a_thread; //创建线程对象void *result; //用于接收线程返回值int ret;/* 创建线程绑定线程执行函数 */ret pthread_create(a_thread,NULL,thread_func,NULL);if(0 ! ret){printf(fail to pthread_create\n);exit(-1);}/* 阻塞等待回收线程资源 */pthread_join(a_thread,result); //将结果存入resultprintf(result is :%s\n,result);printf(message is :%s\n,message);return 0;
}/* 线程函数 */
void *thread_func(void *arg)
{sleep(1);printf(thread_func has been created\n);strcpy(message,marked by thread_func\n);/* 结束线程 */pthread_exit(thank you for waiting for me\n); //线程结束返回参数信息
}