草庐IT

conditional_random

全部标签

c++ - 如何在 for 循环中使用 random_engine 和 mt19937

我正在创建一个简单的ASCII游戏,应该在屏幕上放置3条蛇。我尝试使用for循环打印所有3条蛇:#include#include#include#include#include#includeusingnamespacestd;intmain(){char_levelTwo[20][20];intminSizeRand=1;intmaxSizeRand=19;//RandomEnemie1PlacementEnginestaticrandom_devicexSeed;staticmt19937randGen(xSeed());uniform_int_distributionenemie

C++ 11 : Mutex & Condition Variable Cannot be Copied

我是C++11的新手,正在使用线程。我遇到了一个无法复制互斥锁和条件变量对象的场景。代码是这样的....classproducer{public:producer(mutexm,condition_variablecv){mut=m;//ERRORcvar=cv;//ERROR}private:mutexmut;condition_variablecvar;}尝试在构造函数中复制变量时出现错误。似乎复制构造函数设置为deleteformutex和cv。有办法克服吗?我想要一个生产者和消费者类,然后从ma​​in函数传递互斥量和cv。所以基本上来自main函数的调用应该是这样的.....

c++ - std::condition_variable::notify_all() 保证

假设一个条件变量上有N个等待线程(读者),它们被另一个线程(生产者)通知。现在,所有N个读者都将尝试拥有他们引用的unique_lock,一次一个。现在假设生产者出于某些原因想要再次锁定同一个unique_lock,甚至在任何被唤醒的读者开始拥有锁之前。按照标准,只有在所有被通知的读者都开始锁定步骤后,生产者才能成功(尝试)进入其临界区吗? 最佳答案 除了§1.10第2段中给出的相当模糊的调度之外,没有关于调度的保证:Implementationsshouldensurethatallunblockedthreadseventual

c++ - 使用 std::random_device 和 pRNG 有什么区别,例如std::mt19937 和没有?

在C++11中,可以使用std::random_device生成数字,有或没有像mt19937这样的伪随机数生成器。在此示例代码中使用它会有什么不同:#include#includeintmain(){std::random_devicerd;std::mt19937mt(rd());std::uniform_real_distributiondist(1,10);for(inti=0;i 最佳答案 std::random_device应该为您提供mt19937等引擎的种子。所产生的连续数字的质量是完全不确定的,并且可能很容易不足以

c++ - shared_future<void> 是 condition_variable 的合法替代品吗?

Josuttis指出[“标准库”,第2版,第1003页]:Futuresallowyoutoblockuntildatabyanotherthreadisprovidedoranotherthreadisdone.However,afuturecanpassdatafromonethreadtoanotheronlyonce.Infact,afuture'smajorpurposeistodealwithreturnvaluesorexceptionsofthreads.另一方面,shared_future可以被多个线程使用,以识别另一个线程何时完成了它的工作。另外,一般来说,高级并发

c++ - 为什么condition_variable在producer-consumer中等待锁呢? C++

看下面经典的生产者消费者代码:intmain(){std::queueproduced_nums;std::mutexm;std::condition_variablecond_var;booldone=false;boolnotified=false;std::threadproducer([&](){for(inti=0;ilock(m);std::coutlock(m);while(!done){while(!notified){//looptoavoidspuriouswakeupscond_var.wait(lock);}while(!produced_nums.empty(

c++ - 如何使用 <random> header 成员在 C++ 中生成随机数?

我学会了用C#编程,并开始学习C++。我正在使用VisualStudio2010IDE。我正在尝试使用中可用的分发类生成随机数.例如,我尝试执行以下操作:#includestd::normal_distribution*normal=newnormal_distribution(0.0,0.0);std::knuth_b*engine=newknuth_b();std::variate_generator>*rnd;rnd=newvariate_generator>(engine,normal);最后一行给出编译错误:IntelliSense:构造函数“std::tr1::variat

c++ - condition_variable_any 与 recursive_mutex 一起使用时的行为?

当condition_variable_any与recursive_mutex一起使用时,recursive_mutex是否通常可从其他线程获取,同时condition_variable_any::wait正在等待?我对Boost和C++11实现都很感兴趣。这是我主要关心的用例:voidbar();boost::recursive_mutexmutex;boost::condition_variable_anycondvar;voidfoo(){boost::lock_guardlock(mutex);//Ownershiplevelisnowonebar();}voidbar(){b

c++ - VC++ 和 GCC 下 boost::condition_variable 的不同行为

在我的计算机上,在Windows7上运行,以下代码在带有Boost1.53的VisualC++2010中编译,输出notimeoutelapsedtime(ms):1000使用GCC4.8编译的相同代码(onlinelink)输出timeoutelapsedtime(ms):1000我的意见是VC++输出不正确,应该是timeout。有没有人在VC++中有相同的输出(即notimeout)?如果是,那么它是否是boost::condition_variable的Win32实现中的错误?代码是#include#includeintmain(void){boost::condition_v

C++11 嵌套 std::conditional

这个表达式有什么问题吗?templateusingaddRefU=typenamestd::conditional::type,typenamestd::conditional::type,typenamestd::add_lvalue_reference::type>>::type;intmain(){std::cout>::value>::valuehttp://coliru.stacked-crooked.com/a/21593805f2c6e634因此,它根本没有引用。是否不允许嵌套std::conditional? 最佳答案