利用C++编写简单的多进程或多线程程序
时间: 2024-09-23 22:09:22 浏览: 37
在C++中,你可以通过标准库中的`std::thread`来创建和管理线程,通过`<process>`头文件来处理进程。下面是一些基本的示例:
**创建线程**:
```cpp
#include <iostream>
#include <thread>
void thread_function() {
std::cout << "Hello from thread!" << std::endl;
}
int main() {
std::thread my_thread(thread_function); // 创建新线程
my_thread.join(); // 等待线程完成
std::cout << "Back in main()" << std::endl;
return 0;
}
```
在这个例子中,`thread_function`是一个被其他线程执行的函数。
**创建进程** (Windows平台):
```cpp
#include <windows.h>
#include <iostream>
DWORD WINAPI child_process(LPVOID arg) {
std::cout << "Hello from child process." << std::endl;
return 0;
}
int main() {
STARTUPINFO si = { sizeof(si), };
PROCESS_INFORMATION pi;
CreateProcess(NULL, // 父进程名
L"my_child.exe", // 子进程名
NULL, // 拥有父进程的令牌
NULL, // 使用父进程的环境
FALSE, // 不继承父进程的句柄
0, // 默认继承标志
NULL, // 非常用
NULL, // 起始目录
&si, // 启动信息结构
&pi); // 进程信息结构
CloseHandle(pi.hThread); // 关闭子进程的线程句柄
WaitForSingleObject(pi.hProcess, INFINITE); // 等待子进程结束
CloseHandle(pi.hProcess); // 关闭子进程句柄
std::cout << "Back in main()" << std::endl;
return 0;
}
```
注意,Linux下创建子进程通常使用`fork()`和`exec*()`系列函数。
阅读全文