posix线程的误区: 线程是否启动
来源:互联网 发布:陕西广电网络是国企嘛 编辑:程序博客网 时间:2024/06/05 09:38
pthread_create创建线程
一直以来 我都有一个关于posix线程使用的误区
那就是pthread_create
接口创建了线程 但并没有直接启动它
线程的启动必须要由pthread_join
或是pthread_detach
来完成
产生这个误区的主要原因是由于posix的代码通常是这样写的
#include <stdio.h>#include <pthread.h>void *funThread(void *args) { printf("enter %s\n", _func__);}int main(int argc, char **argv) { pthread_t handle; if (pthread_cerate(&handle, NULL, funThread, NULL) != 0) { printf("create thread failed\n"); return -1; } pthread_join(handle, NULL); return 0;}
这样的流程 在posix的demo代码中是最常见的
久而久之 让人产生了 线程是由pthread_join来启动的
并且直接替换pthread_join为pthread_detach 还会发现线程根本没有被运行(由于pthread_detach不阻塞,直接运行到下一句的return 退出了整个程序 造成线程没有被运行的效果)
线程的运行
把代码替换成这样
#include <stdio.h>#include <pthread.h>void *funThread(void *args) { printf("enter %s\n", _func__);}int main(int argc, char **argv) { pthread_t handle; if (pthread_cerate(&handle, NULL, funThread, NULL) != 0) { printf("create thread failed\n"); return -1; } getchar(); return 0;}
可以看到线程被正常执行 说明pthread_create创建了线程并使线程投入运行
而且 侧面证明了posix线程的默认属性是detach分离的.
阅读全文
0 0
- posix线程的误区: 线程是否启动
- POSIX线程的同步
- Posix 线程
- Posix线程
- POSIX线程
- POSIX 线程
- POSIX线程
- POSIX线程
- POSIX线程
- posix线程
- POSIX线程
- POSIX线程
- POSIX线程
- pthread线程编程--POSIX的线程机制
- POSIX线程(4)线程的属性
- posix线程-线程的取消
- Solaris 线程和 POSIX 线程的 API
- POSIX线程的简单例子
- python函数嵌套
- Day20 --IO流对象 字节流
- Day21 --IO流对象 字符流 递归
- OJ题目--数字整除
- Day22 --序列流 内存输出流 随机访问流 对象操作流 数据输入输出流 打印流 标准输入输出流 Properties
- posix线程的误区: 线程是否启动
- Day23 --递归
- 第三章 ALDS1_1_A:Insertion Sort 插入排序法
- 事件分发和NestedScrolling(一)
- Day24 --多线程(上)
- 基本最小生成树—Kruskal
- Day25 --多线程(下) 设计模式 GUI
- 一篇文章彻底搞懂java动态代理的实现
- 数字与模拟通信系统第四章——带通信号