利用c++编写简单的多进程或多线程程序题目自定,dev来写
时间: 2024-10-08 14:15:11 浏览: 41
在C++中,编写多进程或多线程程序可以让你创建并管理并发任务,提高程序效率。这里给你提供一个简单的多线程示例,我们将创建一个父线程和一个子线程,子线程将在给定的任务完成后发送通知。
```cpp
#include <iostream>
#include <thread> // 引入线程库
// 定义子线程任务函数
void thread_task() {
std::cout << "子线程开始..." << std::endl;
// 这里模拟一些耗时操作
std::this_thread::sleep_for(std::chrono::seconds(5));
std::cout << "子线程完成!" << std::endl;
}
int main() {
// 创建子线程
std::thread child_thread(thread_task);
// 主线程继续执行
std::cout << "主线程开始..." << std::endl;
// 等待子线程结束
child_thread.join(); // 通过join等待子线程结束
std::cout << "主线程结束,子线程已关闭." << std::endl;
return 0;
}
```
在这个例子中,`std::thread`用于创建线程,`std::this_thread::sleep_for`模拟延迟。`child_thread.join()`确保主线程不会在子线程完成前退出。
关于多进程,你可以使用`<process>`库(C++17引入),但是它相对复杂一些,涉及到文件描述符、管道等资源管理。下面是一个简单的进程创建示例:
```cpp
#include <iostream>
#include <sys/types.h>
#include <unistd.h>
// 子进程函数
pid_t fork_child() {
if (fork() == 0) { // 子进程
std::cout << "子进程开始..." << std::endl;
exit(0); // 结束子进程
} else { // 父进程
std::cout << "父进程开始..." << std::endl;
int pid = wait(NULL); // 等待子进程结束
std::cout << "父进程收到子进程结束信号." << std::endl;
}
return pid; // 返回子进程PID,仅父进程有这个值
}
int main() {
pid_t child_pid = fork_child();
if (child_pid > 0) {
std::cout << "父进程PID: " << child_pid << std::endl;
} else if (child_pid == 0) {
std::cout << "我是子进程,即将退出." << std::endl;
} else { // fork失败
std::cerr << "Fork失败" << std::endl;
}
return 0;
}
```
阅读全文
相关推荐















