Linux 多线程创建实验 本实验的目的是为了进一步掌握在 Linux 系统进行 C 语言编程的方法,进一步了解线程的概念,进一步理解进程与线程的概念,并掌握 C 语言线程创建的方法。 实验原理: 1. Pthread_create 函数:创建一个新的线程,其功能对应进程中的 fork 函数,如果成功返回 0,不成功返回一个错误的号码。函数原型:pthread_create(pthread_t *thread,pthread_attr_t *attr,void*(*start_routine)(void *),void *arg)。其中,第一个参数是用于接收创建新的线程的 id,第二个参数是用于设置线程的属性,一般设置为 NULL,表示使用线程默认属性,第三个参数是函数指针,用于设置线程的主函数,当 pthread_create 函数返回时,则会自动调用指定的函数,当指定的函数运行完后,则线程就结束了,第四个参数是设置线程主函数的参数,如果没有这设置为 NULL。 2. Pthread_join 函数:等待执行的线程,并接受子进程返回的状态。函数原型:int pthread_join(pthread_t thread, void retval)。其中,第一个参数是主线程需要等待的指定线程,第二个参数是用于接收对应线程结束状态(如果不接收,则设置为 NULL)。 3. Pthread_self 函数:获取当前线程的 id,其返回值为 Pthread_t 类型(线程 id 类型)。函数原型:pthread_t pthread_self(void)。 4. Pthread_key_create 函数:创建线程私有数据 pthread_key_t 结构。函数原型:int pthread_key_create(pthread_key_t *key, void(*destructor)(void*))。其中,第一个参数是需要实例的 pthread_key_t 变量,第二个参数是销毁函数,此参数是可选的,当为 NULL 则系统调用默认的销毁函数进行相关数据的销毁,如果不为 NULL,则在线程退出的时候,将 key 关联的数据作为参数,传入到指定的销毁函数并调用,最后释放分配的缓冲区或关闭文件流等的释放操作。 5. Pthread_key_delete 函数:销毁线程中的私有数据。函数原型:int pthread_key_delete(pthread_key_t key)。 6. Pthread_setspecific 函数:写线程私有数据。 7. Pthread_getspecific 函数:读线程私有数据。函数原型:void pthread_getspecific(pthread_key_t key):读取当前线程获取对应所持有 pthread_key_t 变量中的内容。 实验内容: 1. 在 main 函数中创建两个子线程,两个子线程的函数为 child1 和 child2。 2. 在两个子线程函数中分别输出两个子线程 id,并在 child2 中定义一个私有变量 a=(学号后 3 位),修改线程私有比变量为 a=(18+学号后 3 位)。 3. 能否在 child1 中对其 child2 的私有变量进行修改,为什么?解析:不能:通过 key 存取的数据是相互独立的。 4. 在 main 函数中,要求 main 函数等待两个子线程的结束,注销线程的私有的数据。 5. 完成课本上第 119 页图 4-9 的线程创建练习,掌握带参数传递的线程创建方法。


剩余6页未读,继续阅读


























- 粉丝: 6267
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 前端SSR架构在SEO优化中的深度应用.doc
- 前端代码分割与懒加载的实战技巧.doc
- 前端代码打包体积优化的十种方法.doc
- 前端表单验证的性能优化与用户体验提升.doc
- 前端代码规范化的工具与团队实践经验.doc
- 前端工程化构建工具对比与性能评测.doc
- 前端缓存策略的设计与性能提升技巧.doc
- 前端跨域请求的解决方案与安全考虑.doc
- 前端可视化数据大屏的架构设计与实现.doc
- 前端响应式布局的实现与兼容性优化.doc
- 前端无障碍设计标准与实现方法.doc
- 前端性能监控工具的实现与数据分析.doc
- 前端自动化构建工具的优化与升级.doc
- 前端性能瓶颈定位的工具与调试技巧.doc
- 区块链共识机制的种类与适用场景分析.doc
- 区块链溯源系统的架构设计与实现.doc



评论0