linux下创建多线程执行
来源:互联网 发布:加油卡办卡通知 编辑:程序博客网 时间:2024/06/05 08:51
linux下创建多线程执行
线程(thread, 台湾称“执行绪”)是“进程”中某个单一顺序的控制流。也被称为轻量进程(lightweight processes)。计算机科学术语,指运行中的程序的调度单位。
线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。在Unix System V及SunOS中也被称为轻量进程(lightweight processes),但轻量进程更多指内核线程(kernel thread),而把用户线程(user thread)称为线程。
下面将介绍一下几种类型的多线程程序涉及:
1.POSIX线程(Pthreads):在POSIX线程中,线程体是一个函数。用pthread_create函数来启动这个线程。用pthread_join函数来等待线程结束。
相关函数:
3.C++ 11 线程:在C++ 11中,线程体是一个函数。在C++11中的STL中,std命名空间中收录了thread类。该类的构造函数的第一个参数就是指向一个线程函数的函数指针。thread类的构造函数被调用时,该线程即刻启动。
相关函数:
在这,主要介绍的是在linux下的POSIX线程实现。
首先看一个具体的简单的具体实现代码:
具体语法实现可直接看代码中的备注。这里需要注意的是这是在linux下实现的,并且编译的时候需要将静态库链接进来,具体编译命令如下:
执行效果如图:
下面将介绍一下几种类型的多线程程序涉及:
1.POSIX线程(Pthreads):在POSIX线程中,线程体是一个函数。用pthread_create函数来启动这个线程。用pthread_join函数来等待线程结束。
相关函数:
pthread_create()函数用于创建线程。返回值为创建线程失败时的错误码;若返回0,表示线程创建成功。
pthread_exit()函数用于结束当前线程。
pthread_join()函数用于等待线程运行结束。
UNIX International 线程
pthread_exit()函数用于结束当前线程。
pthread_join()函数用于等待线程运行结束。
UNIX International 线程
thr_create()函数用于创建线程。
thr_join()函数用于等待线程运行结束。
thr_suspend()函数用于挂起线程。
thr_continue()函数用于恢复被挂起的线程。
thr_exit()函数用于结束当前线程。
thr_self()函数用于返回当前线程的线程标识符。
2.Win32线程:在Win32线程中,线程体是一个函数。用CreateThread函数来启动这个线程。用WaitForSingleObject函数来等待线程结束。
相关函数:thr_join()函数用于等待线程运行结束。
thr_suspend()函数用于挂起线程。
thr_continue()函数用于恢复被挂起的线程。
thr_exit()函数用于结束当前线程。
thr_self()函数用于返回当前线程的线程标识符。
2.Win32线程:在Win32线程中,线程体是一个函数。用CreateThread函数来启动这个线程。用WaitForSingleObject函数来等待线程结束。
CreateThread()函数用于创建线程;返回值为所创建线程的句柄。
ExitThread()函数用于结束本线程。
SuspendThread()函数用于挂起指定的线程。
ResumeThread()函数递减指定线程的挂起计数,挂起计数为0时,线程恢复执行。
3.C++ 11 线程:在C++ 11中,线程体是一个函数。在C++11中的STL中,std命名空间中收录了thread类。该类的构造函数的第一个参数就是指向一个线程函数的函数指针。thread类的构造函数被调用时,该线程即刻启动。
相关函数:
std::thread::thread(),构造函数,用于创建线程。
std::thread::join(),用于等待线程运行结束。
std::thread::detach(),用于让线程不受句柄控制。
std::thread::swap(),用于交换两个线程。
std::thread::get_id(),用于获得线程ID号。
std::thread::joinable(),用于判断线程是否可等待。
std::thread::native_handle(),用于获得与操作系统相关的原生线程句柄。
4.Java线程:在Java中,线程体是从Thread类继承的run()方法,或实现Runnable接口的类中的run()方法。当线程产生并初始化后,实时系统调用它的run()方法。run()方法内的代码实现所产生线程的行为,它是线程的主要部分。
相关函数:std::thread::join(),用于等待线程运行结束。
std::thread::detach(),用于让线程不受句柄控制。
std::thread::swap(),用于交换两个线程。
std::thread::get_id(),用于获得线程ID号。
std::thread::joinable(),用于判断线程是否可等待。
std::thread::native_handle(),用于获得与操作系统相关的原生线程句柄。
4.Java线程:在Java中,线程体是从Thread类继承的run()方法,或实现Runnable接口的类中的run()方法。当线程产生并初始化后,实时系统调用它的run()方法。run()方法内的代码实现所产生线程的行为,它是线程的主要部分。
start(),启动线程。
join(),等待线程运行完毕。
sleep(),让线程休眠一段时间。
setPriority(),设置线程优先级。
在这,主要介绍的是在linux下的POSIX线程实现。
首先看一个具体的简单的具体实现代码:
//编译时候最后加上静态库的加载:g++ -o thread thread.cpp -lpthread#include <pthread.h>#include <iostream>using namespace std;//定义成指针函数,且参数void *ptr需要带上void *hello(void *ptr){ sleep(1); cout << "Hello from thread \n" << std::endl;}int main(){ pthread_t id;//线程创建,返回值为0 int ret = pthread_create(&id,NULL,hello,NULL); cout<<"Main Thread \n"<<std::endl;//等待一个线程的结束,线程间同步的操作 pthread_join(id,NULL); cout<<"Main Thread end \n"<<std::endl; return 0;}
具体语法实现可直接看代码中的备注。这里需要注意的是这是在linux下实现的,并且编译的时候需要将静态库链接进来,具体编译命令如下:
<span style="font-size:18px;">g++ -o thread thread.cpp -lpthread</span>
执行效果如图:
0 0
- linux下创建多线程执行
- Linux下创建多线程
- Linux下创建并执行python脚本
- Linux下创建执行python文件
- Linux下C编程:创建和执行进程
- 《linux下进程的创建,执行,监控和终止》
- linux下多线程的创建与等待详解
- linux下多线程的创建与等待详解
- linux下多线程的创建与等待详解
- linux下多线程的创建与等待详解
- linux下多线程的创建与等待详解
- linux下多线程的创建与等待详解
- linux下多线程的创建与等待详解
- Linux下的多线程编程(一) 创建线程
- linux下多线程的创建与等待详解
- linux下多线程的创建与等待详解
- linux下C语言多线程(第一篇)创建线程
- linux下多线程的创建与等待详解
- LeetCode 347. Top K Frequent Elements
- WTL 通过IWebBrowser2接口使WebBrowser控件在自己的窗口打开网页
- JSON 入门指南
- 通过路径获取视频 缩略图
- vim编辑器的使用
- linux下创建多线程执行
- iphone——日期处理
- C# Console类
- 关于img ,你必须注意的
- 57. Insert Interval
- Shell数组:shell数组的定义、数组长度
- linux网络编程常用头文件
- 為什麼比 GIT 更好--理解 Mercurial 版本管理系統
- 安装busybox提示Invalid cross-device link错误