草庐IT

async-safe

全部标签

c++ - boost::asio::async_read_until 读取所有数据,而不仅仅是一些

我正在修改BoostAsio回显示例以使用async_read_until逐字读取输入。即使我使用async_read_until,所有发送的数据似乎都是从套接字读取的。有人可以建议:#include#include#include#includeusingboost::asio::ip::tcp;classsession{public:session(boost::asio::io_service&io_service):socket_(io_service){}tcp::socket&socket(){returnsocket_;}voidstart(){std::coutsock

c++ - boost::asio::async_read_until 读取所有数据,而不仅仅是一些

我正在修改BoostAsio回显示例以使用async_read_until逐字读取输入。即使我使用async_read_until,所有发送的数据似乎都是从套接字读取的。有人可以建议:#include#include#include#includeusingboost::asio::ip::tcp;classsession{public:session(boost::asio::io_service&io_service):socket_(io_service){}tcp::socket&socket(){returnsocket_;}voidstart(){std::coutsock

c++ - 未存储返回值时,std::async 不会产生新线程

考虑一下我有Lambafoo它只是做一些事情并且不需要返回任何东西。当我这样做时:std::futurehandle=std::async(std::launch::async,foo,arg1,arg2);一切运行良好,lamba将在新线程中生成。但是,当我不存储std::async返回的std::future时,foo将在主线程中运行并阻塞它。std::async(std::launch::async,foo,arg1,arg2);我在这里错过了什么? 最佳答案 来自just::threaddocumentation:Ifpol

c++ - 未存储返回值时,std::async 不会产生新线程

考虑一下我有Lambafoo它只是做一些事情并且不需要返回任何东西。当我这样做时:std::futurehandle=std::async(std::launch::async,foo,arg1,arg2);一切运行良好,lamba将在新线程中生成。但是,当我不存储std::async返回的std::future时,foo将在主线程中运行并阻塞它。std::async(std::launch::async,foo,arg1,arg2);我在这里错过了什么? 最佳答案 来自just::threaddocumentation:Ifpol

c++ - 需要一些关于如何制作类(class)的反馈 "thread-safe"

我目前正在学习如何在C++中进行多线程处理。我的一个学习项目是俄罗斯方block游戏。在这个项目中,我有一个包含所有游戏状态数据的Game类。它有移动方block的方法和其他一些东西。用户将访问此对象(用户将使用箭头键从主线程移动block),同时线程计时器正在对事件block执行重力(定期降低它)。起初我认为我可以通过添加互斥成员变量并将其锁定在每个方法调用中来使Game类线程安全。但问题在于它只保护单个方法调用,而不是涉及多个方法调用的更改。例如://Thisisnotthread-safe.while(!game.isGameOver()){game.dropCurrentBlo

c++ - 需要一些关于如何制作类(class)的反馈 "thread-safe"

我目前正在学习如何在C++中进行多线程处理。我的一个学习项目是俄罗斯方block游戏。在这个项目中,我有一个包含所有游戏状态数据的Game类。它有移动方block的方法和其他一些东西。用户将访问此对象(用户将使用箭头键从主线程移动block),同时线程计时器正在对事件block执行重力(定期降低它)。起初我认为我可以通过添加互斥成员变量并将其锁定在每个方法调用中来使Game类线程安全。但问题在于它只保护单个方法调用,而不是涉及多个方法调用的更改。例如://Thisisnotthread-safe.while(!game.isGameOver()){game.dropCurrentBlo

C++ 多线程 : is initialization of a local static lambda thread safe?

这个问题在这里已经有了答案:GCC'sTSANreportsadataracewithathreadsafestaticlocal(1个回答)关闭5年前。C++11标准说明局部静态变量初始化应该是线程安全的(http://en.cppreference.com/w/cpp/language/storage_duration#Static_local_variables)。我的问题是当lambda被初始化为静态局部变量时究竟会发生什么?让我们考虑以下代码:#include#includeintdoSomeWork(intinput){staticautocomputeSum=[](int

C++ 多线程 : is initialization of a local static lambda thread safe?

这个问题在这里已经有了答案:GCC'sTSANreportsadataracewithathreadsafestaticlocal(1个回答)关闭5年前。C++11标准说明局部静态变量初始化应该是线程安全的(http://en.cppreference.com/w/cpp/language/storage_duration#Static_local_variables)。我的问题是当lambda被初始化为静态局部变量时究竟会发生什么?让我们考虑以下代码:#include#includeintdoSomeWork(intinput){staticautocomputeSum=[](int

Unity中的异步编程【5】——在Unity中使用 C#原生的异步(Task,await,async) - System.Threading.Tasks

一、UniTask(Cysharp.Threading.Tasks)和Task(System.Threading.Tasks)的区别1、System.Threading.Tasks中的Task是.Net原生的异步和多线程包。2、UniTask(Cysharp.Threading.Tasks)是仿照.Net原生的Task,await,async开发的一个包,该包专门服务于Unity,所以取名UnityTask,简称UniTask。3、既然有Task了,为啥还要搞一个UniTask(1)Task可以用在PC和Android上,但是在WebGL上则会报错(与多线程的支持有关),你可以退而求其次,使用

c++ - std::async 与 std::launch::async 策略的行为

我对std::async函数与std::launch::async策略和std::future的行为有一些疑问从异步返回的对象。在以下代码中,主线程在async调用创建的线程上等待foo()的完成。#include#include#includevoidfoo(){std::cout我知道http://www.stdthread.co.uk/doc/headers/future/async.html说Thedestructorofthelastfutureobjectassociatedwiththeasynchronousstateofthereturnedstd::futuresh