问题标签 [concurrency-runtime]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - URI 错误时如何处理来自 StorageFile::OpenAsync 的异常
我有一段代码可以在 URI 有效时从 http URI 正确加载图像,但我无法弄清楚如何在 URI 无效时捕获 OpenAsync 抛出的异常(结果为 404)。
问题是当包含对 OpenAsync 的调用的 lambda 退出时,会抛出异常;在 try/catch 块中不会引发异常。
问题是:
捕获 StorageFile::OpenAsync 抛出的异常的正确方法是什么?
c++ - WinRT中的任务连接,为什么不能使用task::wait?
在我当前的项目中,我最近遇到了一个问题并且无法理解它:
这工作正常并产生预期的结果。但是,如果我将其更改为
我最终收到一个错误,即无效参数已传递给最后一次concurrency::create_task
调用。
这里到底发生了什么?不能混合concurrency::task::then
和concurrency::task::wait
吗?我想我正在创建一个与使用concurrency::task::wait
而不是concurrency::task::then
.
谢谢
visual-studio-2010 - 将 Concurrency::concurrent_queue 与 std::unique_ptr 一起使用
我想使用 Visual Studio 2010 的并发库在线程之间传递操作。我有我的类SimpleAction
,指向它的指针存储在Concurrency::concurrent_queue
.
使用这个定义和“消费”逻辑它可以工作:
但是,当我将其更改为 std::unique_ptr 时,如下所示:
编译器给出以下错误消息:
似乎编译器不喜欢 concurrent_queue 中的这种构造:
这似乎合乎逻辑(我们不希望复制 std::unique_ptr (必须移动它)。
问题:
- 这是 Visual Studio 2010 的并发/PPL 库的已知问题/限制/功能吗?
- 这个问题在 Visual Studio 2012 中解决了吗?
- 还是我做错了什么?
谢谢,帕特里克
.net - 如何处理dot net中的这种死锁情况
假设,我正在申请电影座位预订。场景是,3 个不同的请求同时出现在系统中。也没有毫秒的差异......如何处理请求?如何定义关键部分以及我需要使用什么策略。由于所有请求都在完全相同的时间,所以如何优先考虑哪个用户应该首先进行。
c++ - ConcRT 同步结构与标准库
如果我的应用程序以 Windows 为目标并且已经在它的某些部分使用了并发运行时。在 ConcRT 任务之外使用 ConcRT 同步结构 ( concurrency:critical_section
) 与标准库实现 ( )相比有什么优点/缺点吗?std::mutex
(例如同步 WinAPI 异步回调或管理 dll 导出函数之间的数据访问)
MSDN 文档<mutex>
指出它基于 ConcRT,但这是否意味着内部互斥体使用critical_section,因此在所有情况下都较慢,因此仅在可移植性方面具有优势?
或者,相反,critical_section 是专门为与 ConcRT 调度程序一起使用而设计的,并且在与 OS 线程一起使用时是一个巨大的过度杀伤力?
PS 这个问题涉及并发运行时中的所有同步结构(critical_section、reader_writer_lock 和 event)。
我也省略了 WinAPI 的CRITICAL_SECTION
,MUTEX
和SRW
其他,假设它们是最快和最轻的解决方案(但不是最漂亮的)。
c++ - concurrency::task<_ty> 赋值运算符是线程安全的吗?
我正在尝试使用上面的代码创建一个链,其中多个线程可以调用 post 以确保某些任务(函数/lambdas)的顺序处理。post() 线程中的分配是否安全?
c++ - 当`when_all`的多个子任务抛出未捕获的异常时,可以防止进程终止吗?
并发运行时检测任务抛出的异常何时无法处理并“快速失败”;也就是说,它终止了进程。我有一个案例,给 a 的多个子任务when_all
可能会引发异常。理想情况下,我希望这些异常取消任务树,然后聚合到一个在顶级获取或等待中引发的异常中。相反,我的进程会从我下面终止。这是一个演示问题的玩具示例:
在此示例中,进程在“进程仍在运行”打印到控制台之前终止。似乎子任务中的异常导致wait_all
立即调用其继续,而不等待其他子任务完成/取消,然后无法处理其他子任务引发的异常并导致进程终止。这似乎是非常不可取的。有解决方法吗?这是一个错误吗?我错过了什么吗?
java - “执行单元”是什么意思?
维基百科将执行单元定义为:
“在计算机工程中,执行单元(也称为功能单元)是 CPU 的一部分,它执行计算机程序所需的操作和计算。”
现在,执行程序操作是逻辑上的还是概念上的?还是 CPU 中的物理(硬件)结构执行程序要求的任务(例如关闭计算机、更改颜色等)?
我读过“在并发编程中,有两个执行单元,即进程和线程。”
现在,我脑海中的概念是一个执行单元,比如说一个相关类的包以及它们使用的系统资源,例如系统的内存和其他资源。
请告诉我我在多大程度上是对的?
注意:请保持您的语言(即您可能使用的行话和术语)简单到足以让初学者理解。
先感谢您。
c++ - concurrency::task 析构函数导致调用在有效用例中中止
您能否告诉我我用来处理用例的方法是否无效,如果是,正确的处理方法是什么:
所以代码尝试并行执行两个作业,然后处理结果。如果其中一项作业引发异常,则 calltask::get
将重新引发异常。如果两个任务都抛出异常,则会发生此问题。在这种情况下,第一次调用task::get
将导致堆栈展开,因此task
将调用第二个的析构函数,并反过来导致在堆栈展开期间重新抛出一个异常,从而导致调用“中止”。
在我遇到这个问题之前,这种方法对我来说似乎完全有效。
c++ - Concurrency::critical_section 构建错误:无法访问私有成员
我无法在代码(vs2013)块下构建并收到错误“错误 C2248:'Concurrency::critical_section::critical_section':无法访问在类 'Concurrency::critical_section' 中声明的私有成员”
任何人都可以帮助解释为什么会这样?谢谢