草庐IT

Threading

全部标签

c# - System.Threading.Timer 是否有基于任务的替代品?

我是.Net4.0的任务的新手,我无法找到我认为是基于任务的计时器的替换或实现,例如一个周期性的任务。有这种事吗?更新我想出了一个我认为是满足我需求的解决方案,即将“计时器”功能包装在一个任务中,所有子任务都利用CancellationToken并返回任务以便能够参与进一步的任务步骤。publicstaticTaskStartPeriodicTask(Actionaction,intintervalInMilliseconds,intdelayInMilliseconds,CancellationTokencancelToken){ActionwrapperAction=()=>{if

multithreading - M :N threading model (e. g 的缺点是什么?协程)?

关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭5年前。ImprovethisquestionM:Nthreading是一个将M个用户线程映射到N个内核线程的模型。这使得大量(M)个用户线程得以创建,因为它们的重量轻,仍然允许(N路)并行。这对我来说似乎是双赢的,那么为什么很少有语言/实现使用这种线程模型呢?我所知道的唯一例子是Go的“goroutines”和Erlang的进程。M:N线程的缺点是什么?为什么其他语言不使用这种表面上看起来很有前途的线程模型?

django - 操作失败 : database error when threading in MongoEngine/PyMongo

我有一个函数可以从网站读取数据,对其进行处理,然后将其加载到MongoDB中。当我在没有线程的情况下运行它时,它工作正常,但是一旦我设置了只调用这个函数的celery任务,我经常会收到以下错误:“OperationFailure:数据库错误:未经授权的db:dbname锁定类型:-1”这有点奇怪,因为如果我在多个终端上运行非celery版本,我根本不会收到此错误。我怀疑这与没有与Mongo的开放连接有关,尽管在我的代码中我在每次Mongo调用之前打开一个。具体的异常(exception)情况如下:Tasktwitter[a974bfcc-d6ca-4baf-b36f-cae9143ce

django - 操作失败 : database error when threading in MongoEngine/PyMongo

我有一个函数可以从网站读取数据,对其进行处理,然后将其加载到MongoDB中。当我在没有线程的情况下运行它时,它工作正常,但是一旦我设置了只调用这个函数的celery任务,我经常会收到以下错误:“OperationFailure:数据库错误:未经授权的db:dbname锁定类型:-1”这有点奇怪,因为如果我在多个终端上运行非celery版本,我根本不会收到此错误。我怀疑这与没有与Mongo的开放连接有关,尽管在我的代码中我在每次Mongo调用之前打开一个。具体的异常(exception)情况如下:Tasktwitter[a974bfcc-d6ca-4baf-b36f-cae9143ce

linux - "Compiler threading support is not turned on."

通常我可以通过谷歌搜索找到解决方案,但这次不行。我正在使用64位LinuxUbuntu11.04编译32位Windows应用程序。我正在使用i586-mingw32msvc-gcc来编译我的C++文件。测试.cpp:#include生成文件:i586-mingw32msvc-gcc-c-m32-mthreads-otest.otest.cpp错误:boost/asio/detail/socket_types.hpp:#includedoesn'texist.添加到makefile:-DBOOST_WINDOWSError:#warningPleasedefine_WIN32_WINNT

c++ - Node.js C++ 插件 : Threading

我正在为Node.js(wxWidgets)编写一个GUI插件,我想在自己的线程中运行GUI循环,因为我认为将它与Node的主线程和事件合并不是一个好主意循环。但是我不确定如何创建一个新线程。我用uv_queue_work()让它运行起来。但它不会为GUI创建一个独占线程,而是使用Node的线程池。这可能是一个坏主意,因为工作人员将在整个运行时停留。(不确定)我也可以使用wxWidgets的wxThread,也可以。我在libuvgitmaster中发现了一个新函数uv_thread_create。不知道如何使用它,因为没有描述,此外它在Node.js稳定版本中尚不可用。我的问题:如果

python - "RuntimeError: thread.__init__() not called"子类化 threading.Thread 时

我需要运行与列表dirlist中的元素一样多的Observer类线程。当我运行它python控制台时,它可以正常工作。classObserver(Thread):defrun(self):naptime=random.randint(1,10)print(self.name+'starting,runningfor%ss.'%naptime)time.sleep(naptime)print(self.name+'done')observers={}fordindirlist:observers[d]=Observer()observers[d].start()但是当我尝试从应该产生观察

Python线程: can I sleep on two threading.事件()同时?

如果我有两个threading.Event()对象,并希望在其中一个被设置之前休眠,那么在python中是否有一种有效的方法来做到这一点?显然我可以对轮询/超时做一些事情,但我希望真正让线程休眠,直到设置一个,类似于select用于文件描述符的方式。那么在下面的实现中,wait_for_either的高效非轮询实现是什么样的?a=threading.Event()b=threading.Event()wait_for_either(a,b) 最佳答案 这是一个非轮询非过多线程解决方案:修改现有的Event以在它们发生变化时触发回调,

python - 使用 threading.Thread.join()

我不熟悉python中的多线程,并尝试使用线程模块学习多​​线程。我制作了一个非常简单的多线程程序,但我无法理解threading.Thread.join方法。这是我制作的程序的源代码importthreadingval=0defincrement():globalvalprint"Insideincrement"forxinrange(100):val+=1print"valisnow{}".format(val)thread1=threading.Thread(target=increment,args=())thread2=threading.Thread(target=incr

python threading.Timer : how to pass argument to the callback?

我的代码:importthreadingdefhello(arg,kargs):printargt=threading.Timer(2,hello,"bb")t.start()while1:pass打印出来的只是:b如何将参数传递给回调?卡格斯是什么意思? 最佳答案 Timer接受一个参数数组和一个关键字参数字典,所以你需要传递一个数组:importthreadingdefhello(arg):printargt=threading.Timer(2,hello,["bb"])t.start()while1:pass你看到“b”是因为