#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...\n"; 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\n"; for (auto& t : threads) { t.join(); } std::cout << "All threads joined.\n"; } 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; }
原文:https://www.cnblogs.com/bigben0123/p/13437838.html