草庐IT

random_service

全部标签

c++ - boost::asio -- asio_handler_deallocate 在 io_service::~io_service() 中调用,在 io_service::stop() 之后

我有一个ip::udp::socket用io_service构建.只有一个boost::thread调用io_service::run()方法,以及io_service::work的一个实例防止io_service::run()从返回。我的ip::udp::socket的完成处理程序有定制asio_handler_allocate()和asio_handler_deallocate()函数,由my::custom_memory_pool支持.当我的应用程序退出时,这一系列事件发生在我的关闭线程上:ip::udp::socket::close()work::~work()io_servi

c++ - 如何使用 boost::packaged_task、函数参数和 boost::asio::io_service?

首先,我想为这篇冗长的帖子道歉。我想尽可能彻底。我已经在这个问题上停留了几天了,令人惊讶的是关于正确使用boost::packaged_task的信息很少。在具有输入参数的函数上。系统信息C++03boost1.54.0CMake2.8.9初始要求我有一个由客户端、服务器和设备组成的设置。客户端通过向服务器发送请求来与设备交互。这些请求被检查并路由到适当的设备。请求是异步处理的,偶尔会通过boost::asio::io_service::strand排队由于各种原因。请求被放入设备本身的本地队列中。当请求被确认(不一定完成)时,它会被分配一个ID,并返回给客户端。打包任务看完boost

c++ - std::random_shuffle 产生相同的结果,即使 srand(time(0)) 被调用一次

在一个函数中,我想生成一个范围内的数字列表:(该函数只会在程序执行时被调用一次。)voidDataSet::finalize(doubletrainPercent,boolgenValidData){srand(time(0));printf("%d\n",rand());//indices={0,1,2,3,4,...,m_train.size()-1}vectorindices(m_train.size());for(size_ti=0;i结果是这样的:850577673246239710241201288231237几秒钟后:856981140246239710241201288

c++ - 在 stop() 之后清除 boost::asio::io_service

我正在使用(单线程)boost::asio:io_service来处理很多tcp连接。对于每个连接,我都使用deadline_timer来捕获超时。如果任何一个连接超时,我就不能使用其他连接的任何结果。因此我想完全重启我的io_service。我认为调用io_service.stop()将允许调用队列中“已完成”的处理程序,并且会调用队列中的处理程序并出错。但是看起来处理程序仍保留在队列中,因此调用io_service.reset()和稍后的io_service.run()会使旧的处理程序重新启动。即使在io_service.stop()被调用后,任何人都可以确认处理程序确实保留在队列

c++ - 如何使用 std::vector 初始化 boost::random::discrete_distribution?

我想初始化boost::random::discrete_distribution用std::vector.我的问题是,如果我用一个数组初始化它,就像在官方例子中那样:doubleprobabilities[]={0.5,0.1,0.1,0.1,0.1,0.1};boost::random::discrete_distributiondist(probabilities);然后它就完美地工作了。但是,如果我用std::vector初始化它,那么它的行为就像它只有一个概率为1.0的元素一样。你能告诉我初始化boost::random::discrete_distribution的正确方法

c++ - 使用 TR1/dev/random 在 C++ 中生成随机数(弹性到 <1 秒运行)

我想在C++中生成0到1之间的统一随机数,其方式不使用标准rand()和srand(time(NULL))方法。这样做的原因是,如果我在时钟的同一秒内多次运行应用程序,种子将完全相同并产生相同的输出。我不想依赖提升或操作系统/编译器细节。可以假定为x86。似乎另一种方法是使用TR1(我没有C++11)并以某种方式使用/dev/random进行播种?现在我有这个,但它仍然使用time(NULL)作为种子,在1秒内运行将无法正常工作:#include#includeintmain(){std::tr1::mt19937eng;eng.seed(time(NULL));std::tr1::u

c# - C++ 相当于 C# 中的 new Random(seed)

当我们在C#中使用随机数生成器时,我们可以像这样定义一个变量privateRandom_rndGenerator;在一个类中然后调用_rndGenerator=newRandom(seed);在类的构造函数中正确。我的问题是:这种定义的C++等价物是什么(即类中的RNG)。我认为这不是正确的使用方法srand((unsignedint)seed);对吗? 最佳答案 C++11具有更强大的随机数生成工具。这是一个例子:#include#includestd::size_tget_seed();//whateveristheprefer

c++ - random_shuffle 算法 - 没有随机生成器函数会产生相同的结果吗?

如果标准库中的random_shuffle算法没有提供随机生成器函数,如果提供相同的数据,程序的连续运行会产生相同的随机序列吗?例如,如果std::random_shuffle(filenames.begin(),filenames.end());在程序的连续运行中对目录中的相同文件名列表执行,生成的随机序列是否与先前运行中的相同? 最佳答案 如果你使用相同的随机生成器、相同的种子和相同的起始顺序,结果是一样的。电脑毕竟是其行为具有确定性(模线程问题和其他一些赔率和结束)。如果不指定生成器,则默认生成器为实现定义。我认为大多数实现都

c++ - 为什么要使用 io_service::work?

我是boost编程的新手,我一直在寻找使用io_service::work的理由,但我想不通;在我的一些测试中,我删除了它并且工作正常。 最佳答案 只要有异步操作要执行,io_service::run()就会运行操作。在任何时候,如果没有未决的异步操作(或正在调用的处理程序),run()调用将返回。但是,有些设计更希望run()调用在所有工作完成并且io_service已明确指示可以导出。这就是io_service::work的用途。通过创建work对象(我通常在堆和一个shared_ptr上进行),io_service认为自己总是

C#使用Asp.Net创建Web Service接口并调用

目录一.创建Asp.netweb应用以及WebService服务(1).运行环境(2)创建项目二.创建控制台应用来调用上面创建的WebService一.创建Asp.netweb应用以及WebService服务(1).运行环境开发工具:VisualStudio2022Current(免费社区版)框架版本:.netframework4.7.2,更高的.net5、net6貌似没有默认提供带webservice的asp.net应用模板了。确保VS的工作负荷有勾选下方箭头所指的模块确认环境没有问题之后就可以开始创建项目了。(2)创建项目打开vs点创建新项目选择箭头指向的项目模板,注意是.NETFrame