我熟悉在JVM(Java/nio、Scala/Akka)上根据两种范式(阻塞和非阻塞)进行编程。
然而,我看到中间有一种灰色地带让我困惑
看看你选择的任何非阻塞程序:它充满了阻塞语句
例如,变量的每个赋值都是一个阻塞操作,等待CPU寄存器和内存读取成功。
此外,非阻塞程序甚至包含阻塞语句,这些语句在不违反非阻塞范式的情况下对复杂的内存集合执行计算
与此相反,如果我们以阻塞的方式调用某个外部web服务来接收其结果,则显然违反了非阻塞范式
但在这两个极端之间是什么呢?读/写一个小文件、一个本地套接字
假设一个数据集有10^4个数据点([t,value]),但有一个较长的基线和许多间隙
如果我们对数据进行分类,将有10^8个数据点([t,value]),但只有大约1%是非零值
如何提高检测效率
是否可以采用多线程方式(尤其是Lomb Scargle)
这是否意味着两个线程不能同时更改底层数据?或者,这是否意味着当多个线程执行给定的代码段时,该代码段将以可预测的结果运行?线程安全代码是一种即使多个线程同时执行也能工作的代码
线程安全代码按规定工作,即使由不同线程同时输入。这通常意味着,应该不间断运行的内部数据结构或操作会同时受到不同修改的保护。正如其他人所指出的,线程安全性意味着,如果一段代码同时被多个线程使用,那么它将可以正常工作
值得注意的是,这有时需要花费计算机时间和更复杂的编码,因此并不总是可取的。如果一个类只能在一个线程上安全使用,那
我有一个delphi(Win32)web应用程序,可以作为CGI应用程序、ISAPI或Apache DLL运行。我希望能够生成一个唯一的文件名前缀(在给定时刻对所有当前请求都是唯一的),并且认为最好的方法是使用processID(处理CGI模式)和threadID(处理dll模式)
如何在Delphi中获得唯一的进程ID和线程ID
在多核/多处理器情况下(在单个Web服务器机器上),这些功能是否唯一
编辑:请注意,有人建议我不要使用这种方法,因此,被接受的答案使用不同的方法来生成临时文件名您不能
我有一个列表包装器,它维护两个tstringlist和一个TClassList
我需要它是线程安全的,这样:
不允许并发写入(应输入某种类型的等待状态)
不允许边读边写(反之亦然)(应输入某种等待状态)
允许并发读取
有什么办法可以做到这一点吗?我的直觉告诉我,它需要的不仅仅是一个关键部分,也许是一个信号量或“使用计数器”,也许是其中一个与CS结合使用
我只是不太确定从哪里开始——从英语的整体方法到psuedo代码,再到delphi实现或外部链接,我都非常感激。您应该看看sysutils.p
分布式计算和线程有多相似?我发现两篇论文得出了完全相反的结论:
“多线程比联网更容易。线程如何容易,与网络代码类似”
(这给我的印象是,它们非常相似,在封装之后,这两种方法可以用相同的代码完成——但可能我错了)
“关于分布式计算的说明”
(这是一个明显的区别)
我相信真相介于两者之间。黄金分割是什么意思?是否有任何技术可以统一这两种范式?或者这种尝试失败是因为网络和并发之间的根本区别吗?分布式计算是在多台不同的独立机器上完成的,通常使用专用的操作系统。更困难的是,机器的互连性要低得多,因此需
我正在使用vc++并使用CreateThread函数创建一个线程。我可以在它完成任务后返回后再次重新启动它。无法重新启动已终止的线程。但是,您当然可以使用与CreateThread相同的函数启动一个新线程来运行。您不能重新启动已终止的线程。但是,您当然可以使用相同的函数启动一个新线程来运行,再次使用CreateThread。当然这听起来像线程内部的循环,而不是重新启动它。当然这听起来像线程内部的循环,而不是重新启动它。说线程一旦终止就不能重新启动是绝对正确的。然而,我想指出,对于那些您知道需要反
在大多数常见的平台上(最重要的是x86;我知道有些平台有非常困难的内存模型,几乎不能保证对多线程有用,但我不关心罕见的反例),下面的代码安全吗
线程1:
someVariable = doStuff();
atomicSet(stuffDoneFlag, 1);
线程2:
while(!atomicRead(stuffDoneFlag)) {} // Wait for stuffDoneFlag to be set.
doMoreStuff(someVariable);
假设原子操作的标准
我想了解操作系统中的同步API和异步API。
他们之间有什么区别 同步API将阻止调用方,直到它返回。异步API不会阻止调用方,通常需要回调,该回调将在工作完成后执行
您可以在Web API中使用相同的功能。一些API将在调用结果的主体中返回数据,而其他API将只返回(例如)202,然后在后台执行某些操作(处理数据、设置订阅)。当你所要求的工作“完成”时,这是一种常见的回击方式
目前,我们在Webhook中同时使用同步和异步模式,以避免人们不得不与系统紧密耦合。何时以及为什么需要异步API?回
我希望有人能为我指明正确的方向,告诉我如何在Outlook 2007中运行后台任务,同时保持良好的用户体验。我有一个流程,可以循环默认Outlook日历中的每个项目,并将信息(主题、位置等)发送到后端服务器。我已经尝试了ThreadPool.QueueUserWorkItem并创建了一个线程,并将其isBackground设置为true,但是当此任务运行时,Outlook中正常操作的用户体验似乎受到了影响。理想情况下,我希望这个后台任务运行,而不是让Outlook看起来很慢。有没有想过我该如何做
我对使用.NET4.0中新增强的并行特性非常感兴趣
我也看到了在F#中使用它的一些可能性,就像在C#中一样
尽管如此,我只能看到PLINQ提供的功能,例如:
var query = from c in Customers.AsParallel()
where (c.Name.Contains("customerNameLike"))
select c;
这个并行性肯定还有其他用途
你还有其他使用它的例子吗?这是特别转向PLINQ,还是有其他像PL
我被一个问题困扰了好几个小时,在stackoverflow上阅读了关于这个问题的所有信息(并应用了所有发现的建议),我现在正式需要帮助;o)
以下是上下文:
在我的iPhone项目中,我需要在后台导入数据并将其插入托管对象上下文中。根据这里的建议,以下是我正在做的:
保存主主主运行中心
使用主moc使用的持久存储协调器实例化后台moc
将我的控制器注册为后台moc的NSManagedObjectContextDidSaveNotification通知的观察者
在后台线程上调用导入方法
每次收到
我正在尝试通过跳过昂贵的事件操作(如有必要)来提高生产者/消费者线程的效率,例如:
//cas(variable, compare, set) is atomic compare and swap
//queue is already lock free
running = false
// dd item to queue – producer thread(s)
if(cas(running, false, true))
{
// We effectively obtained
当程序访问文件、使用system()等时,该程序的当前工作目录在物理上是如何知道的/存储在哪里的?由于程序的工作目录在逻辑上类似于全局变量,因此理想情况下它应该是线程本地的,特别是在像D这样的语言中,“全局”变量默认为线程本地的。是否可以将程序线程的当前工作目录设置为本地
注意:如果您对D不太熟悉,即使是语言无关的答案也会很有用。当前目录由操作系统维护,而不是由语言或框架维护。有关详细信息,请参阅
从描述:
多线程应用程序和共享
库代码不应使用
GetCurrentDirectory函数和
应该
下面是代码,其中每个线程必须等待其他线程完成集合部分,然后等待每个线程完成关键部分
/* rendezvous code */
mutex.wait()
count++;
mutex_signal()
if(count==n)
sem.signal()
sem.wait()
sem.signal()
mutex.wait()
count--;
mutex.signal()
if(count==0)
sem.wait()
我知道两
我不是一个很好的程序员,而且对QT来说也很陌生,我对我的措辞感到抱歉
我已经在Qt中创建了一个与main不同的.cpp文件中的sensor类,每当我运行我的程序时,它运行缓慢且滞后,因此我的教授建议为该类创建另一个线程,从sensors检索值。我想把这个类移动到一个单独的新线程中,我只是简单地将所有内容(函数调用、信号等)复制并粘贴到新Qthread的run()函数下
如果这不是一个过程,一些基本的帮助将是非常有益的,我真的不理解QT索引信息
谢谢如果你是Qt的新手,尤其是多线程,我建议你试试。
我有一个类ThreadClass,如下所示:
public class ThreadClass extends Thread{
String msg;
public void run()
{
for(int i=0;i<=5;i++)
{
System.out.println("Run method: "+msg);
}
}
ThreadClass(String mg)
当我在cocoa中测试我的应用程序时,我可以读取一些我不理解的“[切换到进程XXXX线程0xXXXX]”
应用程序何时创建线程
例如,当我将鼠标移到一些主菜单项上时,我得到[切换到进程XXXX线程0xXXXX]
为什么?
苹果可以因为这个原因拒绝我的应用商店申请吗
谢谢 菜单项是否有自定义图像或使用任何动画效果
调试器中的消息只显示应用程序已切换到另一个线程来处理处理,除非我遗漏了什么,否则我认为没有必要担心它们
我们的应用程序已经在应用商店中使用了几个月,它在某些部分使用图像和动画,并在调试器
上周我做了一个线程测验,我把这两个问题搞错了。我想知道是否有人能帮我找到这些问题的正确答案。谢谢
是否有任何结果不能作为此程序的输出?
我对这些问题感到困惑。我运行了这个程序,发现Bbccaa是可能的,aaccbb是可能的,ccbbaa是可能的,aabbcc是可能的
public class Test4 extends Thread { //8
public Test4(String name) {
super(name);
}
public void run() {
在perl脚本中使用async处理线程,我需要执行一些并行功能,但是我必须为这些线程设置一个固定的时间限制(例如,最长5秒)。我需要杀死所有正在运行的线程,如果它们运行的时间更长,但仍然保持程序的活动状态。我的代码是:
use threads ( 'yield',
'exit' => 'threads_only',
'stack_size' => 2*16384 );
use threads::shared;
use Time:
我正在编写一个javafx程序,我需要创建并使用我自己的基于阶段的(javafx.Stage)对话框来显示消息和确认。到目前为止,我已经编写了所有必要的代码,但我有一个问题:
对话框必须停止执行其余代码,直到给出“是”、“否”或“重试”等响应。当我使用像“DialogBox.ShowMessage”这样的对话框时,会出现一个带有消息和按钮的阶段。但是,正如您所想,代码的其余部分将继续执行。我怎样才能避开这件事?当我创建stage时,它必须停止其他线程或它所依赖的线程。我在网上和这里搜索过,但我找
目前,我在windows窗体的列表框中有大约20个包含url的网站
每个url将导航到网站下载图片,并将图片放入windows窗体上的图片框中
我已经为要输入的图片设置了4个图片框
用户将看到动物的图片,然后输入图片并点击提交按钮将结果发送回网站进行确认
我的问题是,当我尝试实现线程池时,在加载下一张图片之前,我没有足够的时间输入动物的名称
对我来说,手动创建每个线程,然后切换将图片提交到站点的按钮来销毁线程并抓取下一个线程是否更好?我很困惑。任何帮助都会很棒
谢谢你可以使用worker来做你的
我正在开发一个Windows Phone应用程序,它需要在运行时绘制许多多边形和多段线
我搜索了google,发现Dispatcher.BeginInovoke()不能满足我的需要。因为我必须在非UI线程中创建DependencyObjects,例如Polygon和Polyline。你能帮我吗
提前感谢。如果您在非ui线程中创建ui元素
必须使用dispather使ui线程执行ui操作,否则它将引发异常
例如:
ThreadHelper.RunInNewThread(()
我在MacOSX上,使用下面的bash脚本在大约10个源代码库上运行doxygen
问题是,doxygen在单独的线程上独自运行最耗时的任务“dot”(创建类图)。这会导致wait命令不等待点线程完成。它实际上会立即将我返回到命令提示符(使用doxygen只创建文档很快),而dot仍在后台生成类图一分钟左右
#!/bin/bash
DOXY="/Applications/Doxygen.app/Contents/Resources/doxygen"
#run doxygen on all c
要获取具有Singleton模式的类的实例,我希望使用以下函数:
这是一幅草图
interface
uses SyncObjs;
type
TMCriticalSection = class(TCriticalSection)
private
Dummy : array [0..95] of Byte;
end;
var
InstanceNumber : Integer;
AObject: TObject;
CriticalSection: TMCritic
我有一个perl程序,它产生了几个线程。每个线程处理一些任务(通过触发其他系统命令等),然后在完成所有任务后等待
一旦所有线程都完成了,它们就会向父进程发送一个信号。然后,父线程加载新作业,并向线程发出信号,让其执行这些新任务
所以理想情况下,这个程序将永远运行
现在,如果我在命令行中用kill-9mainprogram.pl杀死它,它就不会被杀死!我看到线程正在运行的作业的输出,然后我还看到在它们完成后,它们得到新的作业,然后继续下去
我完全糊涂了。如果我执行一个kill-9mainprogr
我有一个多线程实现,我想用Helgrind测试它的死锁。
我已经运行了它们,并根据生成的输出成功地删除了所有数据争用和死锁。现在我想知道Helgrind是如何检测这些错误的。它是从源代码中生成所有可能性并基于这些可能性进行分析,还是仅基于它看到的运行时交织的特定实例进行分析?根据经验,我知道Valgrind工具DRD(类似于Helgrind)只查找在运行时遇到的错误,我很确定Helgrind和任何其他Valgrind工具也是如此
另外,生成复杂程序的所有可能结果是不可行的,特别是当它是线程化的时
我有一个通过串口(是的,串口、arduino、rf24卡等)从自定义网络协议发送和接收数据的连接
我希望能够执行非阻塞代码,查询等待响应数据包的串行端口。
我已经知道,当我使用第三方库时,我可以使用deferToThread,但我不能修改,但事实并非如此,我可以修改代码。我只是想知道如何实现自己的非阻塞代码,该代码返回一个延迟值,稍后返回结果
例如:
发送ID为1的数据包并等待ID相同的ACK
在接收到的数据包队列中ID为1的数据包不可用时保持等待
如果找到ID为1的数据包,则返回结果,以便“调
我正在使用Executors.newSingleThreadExecutor().execute来执行我的方法,在我的方法中,我将文件复制到驱动器,复制后,我将重命名我的文件。在文件名中,我必须将其命名为当前线程数,即如果是第一个线程,我的文件名将是xxx_1,xxx_2,以此类推。是否可以实现它?(我的文件的命名将在我的调用方法中)如果是,请任何人向我建议解决方案。提前谢谢。您可以在处理方法(在单独线程中运行的方法)中使用静态变量并递增它。您能试试吗?然后发布您的代码。Executor Exe
假设我有两个线程读取和修改bool/int“state”。处理器保证读写是原子的
Thread 1:
if (state == ENABLED)
{
Process_Data()
}
Thread 2:
state = DISABLED
在这种情况下,是的,线程1可以读取状态并进入“如果”状态来处理_数据,然后线程2可以更改状态。但在这一点上,继续处理数据并不是不正确的。是的,如果我们窥视引擎盖,我们会发现状态不一致,即被禁用,并且我们进入了Process_Data函数。但在下一
我们已尝试运行下一个命令:
MSBuild.exe ..\src\YaccConstructor.WithoutTests.sln /t:Build /m:8 /v:q /p:Optimize="True" /p:DebugSymbols="True" /p:Configuration="Release" /logger:Fake.MsBuildLogger+TeamCityLogger,"C:\Users\User\Documents\Project\recursive-ascent\tool
我使用的是AFNetworking,代码运行良好,但在成功连接后,没有调用NSURLConnectionLegate方法的任何代理nethods
我在我的接口文件中也声明了NSURLConnection的委托。但似乎什么都不起作用,使用后台线程和主线程有什么问题吗?
这是我的密码:
NSLog(@"\n\n1 Is main thread %@", ([NSThread isMainThread] ? @"Yes" : @" NOT"));
AFHTTPRequestOperationMana
为了找到在相同数据上运行的多个循环构造,我应该寻找什么应用程序域?我想找到这样的模式,并尝试将它们并行化
for (...) {
work1(data);
}
for (...) {
work2(data);
}
我不仅希望找到简单的依赖项,还希望找到更复杂的依赖项。不知道您要的是什么。您是否需要一个静态分析工具来查看源代码并识别在相同数据上运行的循环?我正在尝试寻找应用程序,其中有多个循环一个接一个地运行并处理相同的数据,因此我可以引入循环间并行性。因此,您正在寻找一个静态
我有一个以制表符分隔的大文件(10TB)
我想把这个文件分成若干列,我想用我的24个内核中的每一个并行地做
cut -f1,2,3 file > out
关于如何使用多核或并行实现这一点,您有什么想法吗
我有一些想法,比如
cat file | parallel --round-robin --pipe "cut -f1 1,2,3" > out
cat file | parallel --round-robin --pipe --block 1000000k "cut -f
我正在尝试为循环编写一个小型并行程序。然而,输出给我01,2,3,4,5,6,7,5,4,0,0,0,0,0。。。等等,我正在测试这是否是我传递迭代器的方式,但我非常确定。实现模板并行for循环的更好方法是什么
#include <iostream>
#include <iterator>
#include <vector>
#include <thread>
#include <memory>
using namespace std;
我通过了
及
我不明白这些哈希表怎么会是锁费。我的意思是,如果我们在哈希表getItem和setItem上有两个方法。这是我的职责
function increment2(key):
val = hashtable.getItem(key) + 2
hashtable.setItem(val)
现在这个函数在两个线程中运行,如果我不在这个函数中使用锁,hashtable.getItem(key)的值可以增加2或4。
我很困惑,有人能帮我理解一下吗当谈到并发容器时,我们通常指的是
我正在尝试将AVI视频转换为一系列图像,只将最近8秒的视频保存到“缓冲区”中。我只保存了两位信息:从AVI中提取图像的时间戳,以及图像本身
我的问题是,即使程序是为缓冲区编写的,以覆盖其自身,它仍然会发生内存崩溃-对于8s缓冲区,大约2分钟。(错误:(-4)未能在函数cv::OutofMemoryError中分配########字节)此线程的代码位于上下文的旁边
(上下文:我正在尝试为帧抓取器创建一个模拟器。它不断/无休止地转换保存的AVI,并在视频结束时重新启动。缓冲区应该类似于帧抓取器实际保
我正在使用Vertx3.0运行一些mysql查询。因为该代码不是为异步操作设计的,所以我使用ExecuteBlock。即使代码运行,当我使用jconsole监视我的服务器时,我发现超过100个线程,其中大多数被命名为vert.x-worker-thread-0、vert.x-eventloop-thread-1和vertx blocked thread checker。这是因为我的代码有问题吗
public Handler<RoutingContext> getById()
我试图修改一个并发控制算法,以利用线程的优先级(即,如果低优先级线程和高优先级线程希望同时进入关键部分,则高优先级线程首先进入,而低优先级线程等待一定数量的周期)
以下是修改后的算法:
procphase[i]=want\u cr;
int j=转动;
做{
while(j!=i){
如果(procphase[j]!=out\u cr)
{
如果(procphase[j]==want\u cr&&thrd\u prty[i]你怎么知道它被卡住了?你得到了什么错误或反馈?我不会假装我完全理解这段代
我想运行一个使用线程的函数,我会在程序停止几秒钟后运行。停下来的原因是什么?在C#中,为了避免在使用线程之前停止。
请引导我
谢谢。如果可能,请输入示例代码,谢谢
在这个问题上,它说:
GTX 580可以有16*48个并发翘曲(每个32个螺纹)
一次跑一次。即16个多处理器(SMs)*48个常驻处理器
每条SM的经纱数*32条经纱数=24576条
我很好奇:
使用OpenGL和相同的GPU,我们可以说:
相同数量的线程(据我所知,一个线程处理纹理中的一个像素)同时进行
如果没有,号码是多少?
一个纹理中可以同时处理多少像素
如果这个GPU上的OpenGL可以有10000个并发线程。
如果一个纹理中有10000个像素,另一个纹理中有20000个像素,我们能说
我有一个关于使用fork-join线程池的简单问题。下面是我正在使用的一个简短示例:
executor = "fork-join-executor"
# Configuration for the fork join pool
fork-join-executor {
# Min number of threads to cap factor-based parallelism number to
parallelism-min = 24
# Parallel
我想从给定的字符生成给定长度的字符串。字符的顺序很重要,我也想使用多个线程来生成它。以下是几个例子:
chars: a,b,c,d
length: 1
output:
a
b
c
d
chars: a,b,c,d
length: 2
output:
aa
ab
ac
ad
bb
ba
bc
bd
cc
ca
cb
cd
dd
da
db
dc
我尝试过这个算法:
注意:这是伪代码
func generate(set, str, k){
if (k == 0){
pri
我们拥有大型sphinx分布式集群,
单个前端分布式索引,具有3个后端服务器,每个服务器具有小型本地分布式索引
在流量高峰期间,后端服务器上的平均负载有时会高达80
同时,我可以看到斯芬克斯·霍斯(sphinx hawe)产生了150-200条线程,很快下降到50条,然后又回到150-200条,然后又下降到50条,以此类推
有没有办法“预处理”/“预启动”这些线程?e、 类似于apache的服务器
事实上,我们使用专用硬件,所以如果sphinx在空闲时使用更多内存,我们就不会有问题
在后端服务器
您好,我计划使用BoostSPSC队列。我必须有一个监听器,它总是监听传入的消息,一旦它收到消息,它会将消息放入队列,然后返回等待新消息。还有一个消费者从队列中弹出消息并对其进行处理
因为我不想让我的侦听器等待将锁写入队列,所以我更喜欢boost\u lockfree\u spsc\u queue。我相信,如果在初始化队列时设置fixed\u size,队列的大小会有所不同。但事实似乎并非如此
以下是我的代码:
boost::lockfree::spsc_queue<int, boost:
我有一个fortran子程序。一旦启动,它会运行相当长的时间
现在,我想编写一个程序,它调用线程中C++的FORTRAN子程序。
当用户请求时,应停止(或取消)线程。
但子例程不支持在运行期间终止计算的任何方法
据我所知,子例程只使用堆栈变量(没有分配)。
子例程由windows的静态库(.lib文件)提供
在这种情况下,我是否可以假设终止子例程线程不会导致任何问题,例如资源泄漏
仅供参考,以下是运行环境:
操作系统:Windows 7 64位或更高版本
编译器:C++的MSVC 2015,英
我正在尝试用visualstudio2010和WINAPI开发一个嵌入式硬件模拟器。
当我尝试模拟中断时遇到了问题。。。
中断行为如下所示。。。
当threadA工作时,同时出现了一个中断,
因此,threadA将被保持并跳转以执行ISR函数
ISR功能已经完成,threadA可以恢复并继续工作
我试图用多线程模拟这个动作
所以有一个叫做中断线程的线程,它将挂起threadA和
执行ISR操作,然后恢复threadA,就像下面的代码一样
但问题是,调用sespendthread()时,我的代码会
我是unity的新手,即将建立一个基地建设者
我在这里学习了quill18creates的教程:
并且意识到他的实现甚至不能同时处理多个“工作者”。我添加了多线程来解决这个问题。因此,游戏能够运行几百个“工人”而不延迟
这只是一个概念上的证明,很明显代码需要一个完整的修改。自创建教程以来,Unity添加了一个功能。tilemap的性能说服了我遵循这条路线
因此,我打算用自己的实现重新开始
你能给我想些建议吗?做什么和不做什么?
怎么可能得到这样的“工人”/“代理人”计数
好像有成千上万的工人
既然有人提到,我应该显示循环代码,这里是我现在的代码。
这里我总共有9个文件,我试图将它们合并成一个大数据框架,每个月都有自己的单独列。我试图用循环来缩短代码,但它只显示了最后一个月(2020-09)。请看一看我如何改进我的代码!谢谢你的指导
df1=spark.read.format("parquet").load("dbfs:2020-01/")\
.withColumnRenamed("count", "2020-01&
嗨,我有一个基于FMX的多设备应用程序
同步数据库过程需要更长的时间,我需要启用一个指示符号1来告诉用户等待
下面的代码在n安卓手机上测试,有时有效,有时只完成第一个同步DB功能,有时完成前3个,然后退出。有时,sychDB功能没有发生
procedure TForm1.BtnSyncDBClick(Sender: TObject);
begin
Application.ProcessMessages;
memo3.Lines.Add('Start synchronising...')
上一页 1 2 3 4 5 6 7 8 9 ...
下一页 最后一页 共 324 页