• c++ 随机数 取值范围 多线程


     https://www.cnblogs.com/exciting/p/11162855.html

    #include <random>  
    
    std::random_device rd;                         // A function object for generating seeds
      std::mt19937 gen(rd());
      std::uniform_int_distribution<> dis(1, 6000);//取值 1-6000

    使用:
     dis(gen)

    线程延迟随机多少秒内启动:

    #include <stdio.h>
    #include <stdlib.h>
    #include <iostream>
    #include <string.h>
    #include <thread>
    #include <random>
    
    using namespace std;
    using std::cout;
    
    class HelloWorld {
    public:
        HelloWorld(string url)
        {
            std::random_device rd;                         // A function object for generating seeds
            std::mt19937 gen(rd());
            std::uniform_int_distribution<> dis(1, 6000);//
    
            const int len = 100;
            std::thread threads[len];
            std::cout << "Spawning 5 threads...
    ";
            for (int i = 0; i < len; i++) {
                threads[i] = std::thread(&HelloWorld::thread_task, this, url, dis(gen));
            }
    
            std::cout << "Done spawning threads! Now wait for them to join
    ";
            for (auto& t : threads) {
                t.join();
            }
            std::cout << "All threads joined.
    ";
        }
    
        void thread_task(string url, int time) {
            std::this_thread::sleep_for(std::chrono::milliseconds(time));
            std::cout << "hello thread "
                << std::this_thread::get_id()
                << " paused " << time << " milliseconds" << std::endl;
        }
    };
    
    int main() {
     
        HelloWorld hw("url");
    
        return EXIT_SUCCESS;
    }

    输入任意, 不停的加入新线程:

    #include <stdio.h>
    #include <stdlib.h>
    #include <iostream>
    #include <string.h>
    #include <thread>
    #include <random>
    
    using namespace std;
    using std::cout;
    
    const int len = 10;
    std::vector<std::thread> threads(10);
    
    class HelloWorld {
    public:
        HelloWorld(string url)
        {
            std::random_device rd;                         // A function object for generating seeds
            std::mt19937 gen(rd());
            std::uniform_int_distribution<> dis(1, 6000);//
    
    
            std::cout << "Spawning 5 threads...
    ";
            for (int i = 0; i < len; i++) {
                threads.push_back( std::thread(&HelloWorld::thread_task, this, url, dis(gen)));
            }
    /*
            std::cout << "Done spawning threads! Now wait for them to join
    ";
            for (auto& t : threads) {
                t.join();
            }
            std::cout << "All threads joined.
    ";
    
    */
        }
    
        void thread_task(string url, int time) {
            std::this_thread::sleep_for(std::chrono::milliseconds(time));
            std::cout << "hello thread "
                << std::this_thread::get_id()
                << " paused " << time << " milliseconds" << std::endl;
        }
    };
    
    int main() {
        //输入一个键就不停的循环加入
        char c = 'a';
        while (c != 'q') {
            HelloWorld hw("url");
            cout << "loop:";
            cin >> c;
        }
    
        return EXIT_SUCCESS;
    }
  • 相关阅读:
    javascript核心基础(正则专题)
    JsonUtil(工具类)
    身份证验证要用到的代码
    来cnblog了
    强智科技教务处模拟登录
    Thinkphp学习日记:jQuery_ajax数据提交
    在win8中使用服务器管理器来管理windows server 2012
    在windows server 2012运行锐捷客户端
    CentOS 6.4 配置LAMP 环境 与安装 phpmyadmin
    Linux下的光盘挂载与卸载
  • 原文地址:https://www.cnblogs.com/bigben0123/p/13437838.html
Copyright © 2020-2023  润新知