Older/ToolKit/Thread/WorkThreadPool.h

62 lines
1.7 KiB
C
Raw Normal View History

2024-09-28 23:55:00 +08:00
/*
* Copyright (c) 2016 The ZLToolKit project authors. All Rights Reserved.
*
* This file is part of ZLToolKit(https://github.com/ZLMediaKit/ZLToolKit).
*
* Use of this source code is governed by MIT license that can be found in the
* LICENSE file in the root of the source tree. All contributing project authors
* may be found in the AUTHORS file in the root of the source tree.
*/
#ifndef UTIL_WORKTHREADPOOL_H_
#define UTIL_WORKTHREADPOOL_H_
#include <memory>
#include "Poller/EventPoller.h"
namespace toolkit {
class WorkThreadPool : public std::enable_shared_from_this<WorkThreadPool>, public TaskExecutorGetterImp {
public:
using Ptr = std::shared_ptr<WorkThreadPool>;
~WorkThreadPool() override = default;
/**
*
*/
static WorkThreadPool &Instance();
/**
* EventPoller个数WorkThreadPool单例创建前有效
* thread::hardware_concurrency()EventPoller实例
* @param size EventPoller个数0thread::hardware_concurrency()
*/
static void setPoolSize(size_t size = 0);
/**
* 线cpu亲和性cpu亲和性
*/
static void enableCpuAffinity(bool enable);
/**
*
* @return
*/
EventPoller::Ptr getFirstPoller();
/**
*
* 线线
* 线线
* @return
*/
EventPoller::Ptr getPoller();
protected:
WorkThreadPool();
};
} /* namespace toolkit */
#endif /* UTIL_WORKTHREADPOOL_H_ */