草庐IT

concurrent.futures

全部标签

concurrency - 并发发送/接收go channel

我有一个名为queue的channel,假设缓冲区大小为100。许多go例程可以向这个channel发送数据,另一个go例程坐在那里从这个channel接收数据。这是一个持久的过程,这意味着channel就像一条管道,从多端吸收数据并将数据下沉到一端。我在接收go例程中做了这样的事情:for{fordata:=rangequeue{sink(data)}}现在我的问题是:如果在范围循环完成之前将一些新数据发送到channel缓冲区怎么办。新数据是否可用于下一个范围循环?或者如果在这种情况下不考虑并发性,它们将被遗漏? 最佳答案 您只

concurrency - 为什么带有填充字段的结构工作得更快

我刚找到这个库,它提供无锁环,比channel快得多:https://github.com/textnode/gringo(而且它的工作速度真的更快,尤其是在GOMAXPROCS>1的情况下)但有趣的部分是管理队列状态的结构:typeGringostruct{padding1[8]uint64lastCommittedIndexuint64padding2[8]uint64nextFreeIndexuint64padding3[8]uint64readerIndexuint64padding4[8]uint64contents[queueSize]Payloadpadding5[8]u

SyntaxError: future feature annotations is not defined

FCN源码出现错误SyntaxError:futurefeatureannotationsisnotdefined,出现错误如下图所示:然后我在网上找错误是因为python版本的问题,因此需要把python3.6.x换为python3.7.01.查看当前python版本在终端Terminal输入:$condalist回车,就会出现当前环境下的所有库;往下翻可以看到当前环境下的python版本为3.6.15(这里不用卸载,只需安装新的版本就可以把旧的版本覆盖掉)2.在当前环境下安装python3.7.0在终端Terminal输入$pipinstallpython==3.7.0回车,安装成功;若安

windows - 有什么办法可以得到 future 点的 UTC 时间转换?

在Windows中,我可以通过调用GetTimeZoneInformation轻松地进行UTC转换。结果我返回的结构将有两个不同的偏置值,一个用于标准时间,一个用于DST,还有一个BiasCode表示我们当前使用的是哪个。如果我们只关心当前时刻就好了。但是我有一个API,用户可以调用它来检索有关即将发生的事件的数据。数据以本地时间存储在数据库中,用户需要UTC时间,所以我运行转换,一切都很好......除了我们将在几周内更改时间。如果我用今天的偏差报告时间变化的另一边的事件,它们将偏离一个小时。有什么我可以调用的,它像GetTimeZoneInformation一样工作,只是我给它传递

c# - 什么情况下 TryDequeue 和类似的 System.Collections.Concurrent 收集方法会失败

我最近注意到System.Collections.Concurrent中包含的集合对象内部命名空间,通常会看到Collection.TrySomeAction()而不是Collection.SomeAction()。这是什么原因?我认为它与锁定有关?所以我想知道在什么情况下尝试(例如)从堆栈、队列、包等中出列项目会失败? 最佳答案 集合在System.Collections.Concurrent命名空间被认为是线程安全的,因此可以使用它们来编写在线程之间共享数据的多线程程序。在.NET4之前,如果多个线程可能正在访问单个共享集合,则

java - future.cancel 不起作用

我有一个漂亮而紧凑的代码,但它没有像我预期的那样工作。publicclassTest{publicstaticvoidmain(String[]args){Runnabler=newRunnable(){@Overridepublicvoidrun(){try{for(;;){}}finally{System.out.println("FINALLY");}}};ExecutorServiceexecutor=Executors.newSingleThreadExecutor();Futurefuture=executor.submit(r);try{future.get(3,Time

java - 模拟返回列表 future 的外部依赖

我有一个具有返回列表future的外部依赖项的类。如何模拟外部依赖?publicvoidmeth(){//somestuffFuture>f1=obj.methNew("anyString")//somestuff}when(obj.methNew(anyString()).thenReturn("howtointialisesomedatahere,likelistofnames") 最佳答案 您可以使用thenReturn()创建future并返回它.在下面的例子中,我创建了一个已经完成的Future>使用Completable

java - 结合 Java Swing 和 Java3D : performance problems with concurrency

我正在将Swing和Java3D结合在一起。swing组件的操作应该使用事件分配器线程完成,而Java3D组件的操作应该在BehaviourSchedulerThread中完成。Java3D渲染场景,然后执行与场景关联的所有行为。我在Canvas3D上启用了MouseListener。事件被发布到AWT事件队列中。然后我想根据这些事件修改Java3D环境,所以我使用了一个特殊的行为,我可以在其中发布Runnable的。这确保了Runnable在Java3D的行为周期中执行(并且在渲染周期中不修改任何内容)。假设Behavior中的一些操作想要修改Swing模型。然后我必须向EDT发布一

c++ - 为什么 std::future::wait_for 不等待正确的持续时间?

我不明白为什么调用std::future::wait_for时测量的持续时间和指定的持续时间之间的差异会随着指定持续时间的增加而增加。当我告诉std::future等待10ns并测量耗时时,我得到~2000ns。现在,10纳秒是一个非常短的持续时间,所以可能相关函数调用涉及太多开销以等待这么短的时间。但是当我告诉std::future等待100000ns并测量耗时时,我得到~150000ns。分别等待10微秒和100微秒时,可以看到类似的效果。#include#include#include#includeusingnamespacestd::chrono;usingnamespace

c++ - 将执行从一个线程转移到另一个线程以实现任务并行性和 future 调用

我正尝试在C++中实现一个future调用机制。虽然这只是一个测试代码(制作有点匆忙),但我打算在我正在使用的一种语言的运行时使用类似的东西来实现透明并行。我已经干掉了我正在处理的代码以使其更小一些,尽管它仍然很大:#include#include#include#include#include#include#include#include#include#includeusingnamespacestd;usingnamespacestd::chrono;//--------------------------------------------------------------