Linux--线程安全、死锁、单例线程池问题
在Linux环境下,线程安全、死锁以及单例线程池的实现可以通过C++语言来解决。以下是一个简单的示例代码:
#include <iostream>
#include <thread>
#include <vector>
#include <mutex>
// 单例线程池
class ThreadPool {
private:
std::vector<std::thread> threads;
std::mutex mtx;
static ThreadPool* instance;
ThreadPool() {}
public:
static ThreadPool* getInstance() {
if (!instance) {
std::lock_guard<std::mutex> lock(mtx);
if (!instance) {
instance = new ThreadPool();
}
}
return instance;
}
void start(int num_threads) {
for (int i = 0; i < num_threads; ++i) {
threads.emplace_back([]() {
// 线程工作代码
std::cout << "Thread is running." << std::endl;
});
}
}
~ThreadPool() {
for (auto& t : threads) {
if (t.joinable()) {
t.join();
}
}
}
};
// 初始化单例对象
ThreadPool* ThreadPool::instance = nullptr;
int main() {
ThreadPool* pool = ThreadPool::getInstance();
pool->start(5); // 启动5个线程
return 0;
}
这段代码展示了如何创建一个单例的线程池,并在主函数中启动了5个线程。通过使用std::mutex
和std::lock_guard
来保证在多线程环境下的线程安全性。这个例子简单地展示了线程池的创建和启动,并没有包含完整的线程池管理功能。
评论已关闭