• 一个简单的threadpool


    Interface如下

    代码
    struct Job
    {
        
    void (*func)(void*);
        
    void *para;
    };

    class ThreadPool:noncopyable
    {
    public:
        
    static SetNumThreads(size_t NThread);    //MUST called before Instance()

        
    static ThreadPool& Instance();
        
        boost::shared_ptr
    <Event> SubmitJob(const Job& job);
        
        
    void WaitAllJobDone();

        
    //make as public JUST FOR pass VC6 compile!
        ThreadPool();
        
    ~ThreadPool();
        
    private:
        
    static void JobThread( void * pThis );
        
        
    bool m_exit;
        std::vector
    <unsigned long> m_threads;
        
        
    struct JobData
        {
            Job job;
            boost::shared_ptr
    <Event> event;
        };

        std::list
    <JobData> m_JobQueue;
        Mutex m_jobMutex;
        
    static size_t m_numThread;

    };

    附加一个简单的使用例子

    代码
    void f(void* p)
    {
        
    int* pI = (int*)p;
        printf(
    "Thread %d, I: %d\n", GetCurrentThreadId(), *pI);
        Sleep(
    1000);
    }

    int main(int argc, char* argv[])
    {
        printf(
    "Hello World!\n");
        ThreadPool
    & pool = ThreadPool::Instance();
        size_t i;

        std::vector
    <int> paras(10);
        
    for(i=0; i<10; i++)
            paras[i] 
    = i;

        Job job;
        job.func 
    = f;

        
    //std::vector<boost::shared_ptr<Event> > jobs;

        
    for(i=0; i<10; i++)
        {
            job.para 
    = &paras[i];
            pool.SubmitJob(job);
            
    //jobs.push_back();
        }

        
    /*for(i=0; i<10; i++)
        {
            jobs[i]->Wait(INFINITE);
        }
    */
        pool.WaitAllJobDone();

    全部源代码在这里 (vs6)

    https://files.cnblogs.com/cutepig/testJobThread.rar
  • 相关阅读:
    C++ string 类详解
    C语言 -- 字符串详解
    基本数据结构 -- 链表的遍历、查找、插入和删除
    Shell 基础 -- 总结几种括号、引号的用法
    用 C 语言描述几种排序算法
    Win10 + vs2017 编译并配置tesseract4.1.0
    前端如何引入vConsole
    php设计模式-数据对象映射模式
    PHP设计模式-策略模式
    PHP设计模式-适配器模式
  • 原文地址:https://www.cnblogs.com/cutepig/p/1759229.html
Copyright © 2020-2023  润新知