利用c++编写简单的多进程或多线程程序题目自定
时间: 2024-10-08 08:13:38 浏览: 27
在C++中,编写简单的多进程或多线程程序可以帮助理解并发编程的基本原理。这里我们以一个简单的例子来演示如何创建并管理两个独立运行的任务。
**多进程示例 (使用`fork()`函数)**:
```cpp
#include <iostream>
#include <unistd.h>
// 创建子进程函数
void child_process(int id) {
std::cout << "Child process " << id << " started.\n";
sleep(2); // 模拟工作时间
std::cout << "Child process " << id << " finished.\n";
}
int main() {
pid_t pid1 = fork(); // 创建第一个子进程
if (pid1 == 0) { // 子进程
child_process(1);
_exit(0); // 防止父进程阻塞
} else if (pid1 > 0) { // 父进程
pid_t pid2 = fork(); // 创建第二个子进程
if (pid2 == 0) { // 第二个子进程
child_process(2);
_exit(0);
}
wait(NULL); // 等待第一个子进程结束
std::cout << "Parent waiting for second child...\n";
wait(NULL); // 等待第二个子进程结束
}
return 0;
}
```
在这个程序中,父进程会创建两个子进程,每个子进程独立执行`child_process`函数。
**多线程示例 (使用`std::thread`)**:
```cpp
#include <iostream>
#include <thread>
// 单个任务函数
void worker_function() {
std::cout << "Worker thread started.\n";
std::this_thread::sleep_for(std::chrono::seconds(2)); // 模拟工作时间
std::cout << "Worker thread finished.\n";
}
int main() {
std::thread t1(worker_function); // 创建线程1
std::thread t2(worker_function); // 创建线程2
t1.join(); // 等待线程1完成
std::cout << "Waiting for thread 1 to finish...\n";
t2.join(); // 等待线程2完成
std::cout << "Waiting for thread 2 to finish...\n";
return 0;
}
```
这个程序展示了如何使用`std::thread`创建并同步两个线程执行`worker_function`。
阅读全文