C++中进程与线程的创建
时间: 2024-04-24 20:23:07 浏览: 9
在C++中,进程和线程是并发执行的基本单位。
创建进程的常用方法是使用fork()函数。fork()函数会创建一个与当前进程相同的子进程,子进程会从fork()函数的返回处开始执行。父进程和子进程在执行过程中拥有独立的地址空间,但它们可以通过进程间通信(如管道、共享内存等)来进行数据交换。
示例代码如下:
```cpp
#include <unistd.h>
#include <iostream>
int main() {
pid_t pid = fork();
if (pid < 0) {
std::cerr << "Fork failed." << std::endl;
return 1;
} else if (pid == 0) {
// 子进程
std::cout << "This is child process." << std::endl;
} else {
// 父进程
std::cout << "This is parent process." << std::endl;
}
return 0;
}
```
创建线程可以使用C++11引入的标准库中的thread类。通过创建thread对象,并传入一个可调用对象(如函数、函数对象、lambda表达式等),即可创建线程。
示例代码如下:
```cpp
#include <iostream>
#include <thread>
void threadFunc() {
std::cout << "This is a thread." << std::endl;
}
int main() {
std::thread t(threadFunc);
// 等待线程执行完毕
t.join();
std::cout << "Main thread exits." << std::endl;
return 0;
}
```
需要注意的是,创建线程后,需要使用join()函数等待线程执行完毕,否则主线程可能会在子线程执行完之前退出。