📄 threadbalancer.h
字号:
// ========================================================
// Thread management/balancing
//
// Design and Implementation by Floris van den Berg
// ========================================================
#ifndef THREADBALANCER_H
#define THREADBALANCER_H
#ifndef _LIST_
#include <list>
#endif
#ifndef _MEMORY_
#include <memory>
#endif
#ifndef BOOST_THREAD_WEK070601_HPP
#include <boost/thread/thread.hpp>
#endif
// --------------------------------------------------------
struct DataEntry;
struct ThreadEntry;
struct ITransport;
class ThreadBalancer;
// --------------------------------------------------------
typedef _STL::list<DataEntry *> DataList;
typedef _STL::list<ThreadEntry *> ThreadList;
// --------------------------------------------------------
struct ThreadFunction {
public :
ThreadFunction(ThreadEntry *entry);
void operator()();
void iterate();
private :
ThreadEntry *m_entry;
};
// --------------------------------------------------------
struct DataEntry {
ITransport *transport;
int entry_id;
};
struct ThreadEntry {
boost::mutex cs_holder;
bool thread_running;
boost::thread *thread_handle;
DataList contents;
bool allow_balancing;
};
// --------------------------------------------------------
class ThreadBalancer {
public :
virtual ~ThreadBalancer();
int addTransport(ITransport *transport, bool allow_balancing);
void removeTransport(int id);
public :
static ThreadBalancer *getInstance();
static bool isInstantiated();
static void destroyInstance();
private :
static ThreadBalancer *instance;
private : // private constructor
ThreadBalancer();
private :
void AbortThreads(ThreadList &list);
int removeTransportFromThread(ThreadEntry *thread, DataList::iterator j);
bool removeEntry(ThreadList &list, int id);
void balance();
private :
boost::mutex m_cs;
ThreadList m_threads_unbalanced;
ThreadList m_threads_balanced;
int m_entry_number;
};
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -