草庐IT

task_struct

全部标签

c# - ValueTask 的 Task.WhenAll

是否有接受ValueTask的Task.WhenAll等效项?我可以使用解决它Task.WhenAll(tasks.Select(t=>t.AsTask()))如果它们都包装了一个Task,这会很好,但是它会强制为真正的ValueTask分配一个Task对象的无用分配. 最佳答案 按照设计,没有。来自thedocs:Methodsmayreturnaninstanceofthisvaluetypewhenit'slikelythattheresultoftheiroperationswillbeavailablesynchronou

c# - 返回 Task<T> 的方法是否应该始终启动返回的任务?

如果我有这样的方法TaskLongProcessTaskAsync();返回一个开始的任务会是更好的做法吗returnTask.Factory.StartNew(()=>{...});或者只是returnnewTask(()=>...)就个人而言,我更喜欢第一种方法,但我更愿意与其他API和库保持一致。返回未开始的任务是否更合适? 最佳答案 在异步/等待方法的情况下,任务将已经启动。AFAIK,为基于任务的版本添加的所有BCL方法都返回已经启动的任务。不这样做有点奇怪,因为现在常见的消费者案例是:varfoo=awaitGetFoo

c# - 为什么在 .NET 中将返回类型 void 声明为 struct?

AFAIKvoid在编程语言方面没有任何意义。那么为什么在.Net框架中它被声明为struct呢?usingSystem.Runtime.InteropServices;namespaceSystem{//////Specifiesareturnvaluetypeforamethodthatdoesnotreturnavalue.//////2[ComVisible(true)][Serializable][StructLayout(LayoutKind.Sequential,Size=1)]publicstructVoid{}} 最佳答案

c# - Observable.FromAsync 与 Task.ToObservable

有没有人可以指导何时使用其中一种方法而不是另一种方法。他们似乎做同样的事情,因为他们将TPLTask转换为Observable。Observable.FromAsync似乎支持取消标记,这可能是一个细微的差别,允许生成任务的方法参与协作取消(如果已处理可观察对象)。只是想知道我是否遗漏了一些明显的东西,为什么你会使用一个而不是另一个。谢谢 最佳答案 Observable.FromAsync接受Func形式的TaskFactory或Func>,在这种情况下,只有在订阅可观察对象时才会创建和执行任务。哪里.ToObservable()需

c++ - 使用 struct 关键字声明一个类,反之亦然

当然,我们甚至不应该考虑做这样的事情,我知道,但这仍然很有趣:classA;//declarationstructA{...};//definitionstructB;//declarationclassB{...};//definition当我考虑它时,如果真的允许这样的事情,我没有看到任何问题(因为结构和类本质上是同一件事)。但它是(标准的)吗?MSVC接受并编译它,但会发出警告。 最佳答案 根据标准它是允许的,但正如一些编译器警告的那样,它不是很有用。我相信这个警告是/是由MSVC对结构和类使用不同的名称修饰引起的,这会使它变

c++ - 错误 : forward declaration of struct

我收到错误:proprietario.cpp:36:error:invaliduseofincompletetype‘structMotocicleta’proprietario.h:12:error:forwarddeclarationof‘structMotocicleta’摩托车.h:#ifndef__MOTOCICLETA__#define__MOTOCICLETA__#include#include"veiculo.h"#include"proprietario.h"usingnamespacestd;classProprietario;classMotocicleta:pu

C++ : convert date/time string to tm struct

将此视为对thisquestion的跟进.从本质上讲,C++日期/时间格式化工具似乎无可救药地被破坏了——以至于为了做一些像将日期/时间字符串转换为对象这样简单的事情,你真的不得不求助于Boost.Datetime或旧的Cstrftime/strptime工具。问题是这些解决方案都不能直接与特定iostream对象上的C++区域设置一起工作。C工具使用全局C/POSIX语言环境设置,而Boost.Datetime中的I/O工具似乎完全绕过iostream语言环境设置,允许用户直接设置月份、工作日等的名称,而不管语言环境如何。因此,我想要一些能够尊重注入(inject)特定I/O流的语言

c++ - boost asio : different thread pool for different tasks

网络上有很多关于创建简单线程池的示例,例如Sample1和Sample2虽然我想要实现的是为不同的任务提供一个单独的线程池。例如,应用程序可能有一个线程池用于处理传入的tcp连接(我们称之为网络池),而另一个线程池用于与数据库(数据库池)对话。这些传入的tcp请求可能需要来自数据库的信息。在这种情况下,它需要请求数据库池中的那些线程执行查询,并异步返回结果。是否有使用boost::asio的推荐方法?每个池都有一个io_service实例吗?这些线程应该如何相互通信(使用boost)?我明白要解释所有这些,代码不会那么短和琐碎,但如果可能的话,一些伪代码将不胜感激。谢谢!

c++ - gcc std::regex 与 -fpack-struct 段错误

考虑以下简单的C++程序#include#includeintmain(intargc,char*argv[]){std::regexfoobar("[A]+");return0;}当使用-fpack-struct=1编译时出现段错误g++-5-std=gnu++14./fpack_regex.cpp-fpack-struct=1-oa.out&&a.outSegmentationfault(coredumped)同时g++-5-std=gnu++14./fpack_regex.cpp-oa.out&&a.out工作得很好。关于为什么pack-struct=1选项可能导致此失败的任何线

c++ - 错误 C2011 : 'MSXML2::IXMLDOMImplementation' : 'struct' type redefinition

我正在更改我的C++项目,该项目之前在VC6中,现在正在迁移到VS2008,以使用MSXML6而不是早期的MSXML3。当代码在VC6中时,我们通过导入它来使用MSXML3#import"msxml3.dll"这被替换为#import"msxml6.dll"在此之后,当我编译项目时,我得到了这个和其他几个类似的错误错误C2011:“MSXML2::IXMLDOMImplementation”:“结构”类型重新定义以上错误在msxml3.tlh文件中。1)为什么仍然使用msxml3?2)我将问题缩小到MSXML.h,它以某种方式自动包含在我的项目中。为什么是这样?3)MSXML.h中引用