• 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;
    }
  • 相关阅读:
    Ping pong
    [NOIp2015普及组]推销员
    [模板]树状数组
    [洛谷201704R1]开心派对小火车
    洛谷P3515 [POI2011]Lightning Conductor(决策单调性)
    bzoj1560:[JSOI2009]火星藏宝图(斜率优化)
    (转载)行走在镜面的边缘
    洛谷P4360 [CEOI2004]锯木厂选址(斜率优化)
    洛谷P4072 [SDOI2016]征途(斜率优化)
    洛谷P3648 [APIO2014]序列分割(斜率优化)
  • 原文地址:https://www.cnblogs.com/bigben0123/p/13437838.html
Copyright © 2020-2023  润新知