zoukankan      html  css  js  c++  java
  • 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;
    }
  • 相关阅读:
    Linux学习笔记:【004】Linux内核代码风格
    ARM寄存器介绍
    2013 HTML5中国峰会演讲:Android上的HTML5:过去,现在和将来
    Ubuntu下编译SHTOOLS
    反对网抄,没有规则可以创建目标"install" 靠谱解答
    使用MTL库求解最小二乘解
    反对抄袭 正解spring的@Autowired 不要相信网上的错误版本
    浅析GDAL库C#版本支持中文路径问题(续)
    浅析GDAL库C#版本支持中文路径问题
    GDAL库调试(包括跨语言调试)
  • 原文地址:https://www.cnblogs.com/bigben0123/p/13437838.html
Copyright © 2011-2022 走看看