首页 » 嵌入式笔记 » 正文

linux多线程编程学习总结

本文是所有内容均是个人总结,并且会根据个人学习进度不停更新.如果有错误的地方请在留言中指出.谢谢.

线程 进程 tid pid 真实pid 等基础理解

  • 进程间相互独立,全局变量以及代码段等不共享
  • 线程间资源共享,全局变量及代码段在所有线程都可以访问
  • 在不同进程中创建线程时,它们的线程pid可能会一样,即不同进程中的线程可能有相同的id
  • 获取进程的pid使用getpid(),获取线程的pid使用syscall(SYS_gettid)
  • 在线程中运行exit等函数会导致整个进程退出,kill某个线程也可能会导致进程的退出

[toc]

线程创建 pthread_create

int pthread_create(pthread_t *thread, pthread_attr_t *attr, void *(*start_routine)(void *), void *arg);
#用法
pthread_t id;
pthread_create(&id, NULL, 函数入口,(void *)&参数结构体 );

调用如果成功,则返回值是0,如果失败则返回错误代码。

结束线程

在线程中自行了断 pthread_exit

结束线程有多种方式,最安全的方式是在线程中执行pthread_exit(0),或直接return (void *)0;

通过其他线程结束 int pthread_cancel(pthread_t thread)

一个线程可以通过此机制向另外一个线程发送结束请求,值得一提的是,接收此请求的线程可以通过本线程的两个属性来决定是否取消以及时同步(延时)取消还是异步(立即)取消。函数成功返回,并不代表那线程就结束了。

本人目前尚未在自已的代码中使用此函数,先暂不更新
相关函数原型

发表评论