Questions tagged «concurrency»

在计算机科学中,并发是系统的属性,其中可以在重叠的时间段内执行多个计算。这些计算可以在同一芯片的多个内核上执行,也可以在同一处理器上抢占时间共享线程,或者在物理上分开的处理器上执行。



18
并行编程和并行编程有什么区别?
并行编程和并行编程有什么区别?我问谷歌,但没有找到任何可以帮助我理解这种差异的东西。你能给我两个例子吗? 现在,我找到了以下解释:http : //www.linux-mag.com/id/7411-但是“并发是程序的属性”与“并行执行是机器的属性”对我来说还不够-我还是不能说什么。

15
设置使用人数
受这个问题的启发,在SET NOCOUNT上有不同的看法... 我们是否应该将SET NOCOUNT ON用于SQL Server?如果没有,为什么不呢? 它的作用编辑6,2011年7月22日 它抑制了任何DML之后的“受影响的xx行”消息。这是一个结果集,发送时,客户端必须对其进行处理。它很小,但是可以测量(请参见下面的答案) 对于触发器等,客户端将收到多个“受影响的xx行”,这将导致某些ORM,MS Access,JPA等的各种错误(请参见下面的编辑) 背景: 公认的最佳实践(直到这个问题之前,我一直认为)是SET NOCOUNT ON在SQL Server的触发器和存储过程中使用。我们到处都使用它,一个快速的google也显示出很多SQL Server MVP也同意。 MSDN表示,这可能会破坏.net SQLDataAdapter。 现在,这对我来说意味着SQLDataAdapter仅限于完全CRUD处理,因为它希望“ n个受影响的行”消息匹配。因此,我不能使用: 如果存在则避免重复(不影响行的消息)注意:请谨慎使用 不存在(行数少于预期) 过滤掉琐碎的更新(例如,实际上没有数据更改) 之前进行任何表访问(例如记录) 隐藏复杂性或去甲化作用 等等 在问题marc_s(谁知道他的SQL知识)说不要使用它。这与我的想法有所不同(我也认为自己在SQL方面有些能力)。 我可能会遗漏一些东西(随意指出显而易见的地方),但是你们在那里的人们怎么想? 注意:已经有好几年了,因为我现在不使用SQLDataAdapter,所以看到了此错误。 在评论和问题之后进行编辑: 编辑:更多的想法... 我们有多个客户端:一个可以使用C#SQLDataAdaptor,另一个可以使用Java的nHibernate。这些可能会以不同的方式受到影响SET NOCOUNT ON。 如果您将存储的procs当作方法,那么以某种方式处理某些内部处理以达到您自己的目的是不好的形式(反模式)。 编辑2:触发打破nHibernate问题,SET NOCOUNT ON无法设置在哪里 (不,它不是this的重复) 编辑3:还有更多信息,多亏了我的MVP同事 KB 240882,导致在SQL 2000及更早版本上断开连接的问题 性能提升演示 编辑4:2011年5月13日 如果未指定,是否也会破坏Linq 2 SQL? 编辑5:2011年6月14日 …

8
如果可以使用同步的(this),为什么还要使用ReentrantLock?
我试图了解是什么使并发锁如此重要,如果可以使用的话synchronized (this)。在下面的虚拟代码中,我可以执行以下任一操作: 同步了整个方法或同步了易受攻击的区域(synchronized(this){...}) 或使用ReentrantLock锁定易受攻击的代码区域。 码: private final ReentrantLock lock = new ReentrantLock(); private static List<Integer> ints; public Integer getResult(String name) { . . . lock.lock(); try { if (ints.size()==3) { ints=null; return -9; } for (int x=0; x<ints.size(); x++) { System.out.println("["+name+"] "+x+"/"+ints.size()+". values >>>>"+ints.get(x)); } } finally { lock.unlock(); } …

9
“ Java并发实践”是否仍然有效?[关闭]
关闭。此问题不符合堆栈溢出准则。它当前不接受答案。 想改善这个问题吗?更新问题,使其成为Stack Overflow 的主题。 3年前关闭。 改善这个问题 是Java并发在实践中是否仍然有效?我想知道本书中描述的思想,概念和实现是否仍然与最新的Java版本兼容。 我问,因为最新版本是2006年完成的。



15
用Python发送100,000个HTTP请求的最快方法是什么?
我正在打开一个具有100,000个URL的文件。我需要向每个URL发送一个HTTP请求并打印状态代码。我正在使用Python 2.6,到目前为止,我们研究了Python实现线程/并发性的许多令人困惑的方式。我什至看过python 并发库,但无法弄清楚如何正确编写此程序。有没有人遇到过类似的问题?我想通常我需要知道如何尽快地在Python中执行数千个任务-我想这意味着“同时”。
285 python  http  concurrency 

6
当Node.js内部仍依赖于Threads时,其固有速度如何?
我刚刚观看了以下视频:Node.js简介,但仍然不了解如何获得速度优势。 主要是,有一点Ryan Dahl(Node.js的创建者)说Node.js是基于事件循环的,而不是基于线程的。线程很昂贵,只应留给并行编程专家使用。 后来,他然后展示了Node.js的体系结构栈,该体系结构栈具有基础的C实现,该实现在内部具有自己的线程池。因此,显然,Node.js开发人员永远不会启动自己的线程或直接使用线程池...他们使用异步回调。我很明白。 我不明白的是,Node.js仍在使用线程...只是在隐藏实现,因此,如果50个人很好地请求50个文件(当前不在内存中),那么不需要50个线程,这样做会更快吗? ? 唯一的区别是,由于它是在内部进行管理的,因此Node.js开发人员不必对线程详细信息进行编码,而是在其下方仍在使用线程来处理IO(阻止)文件请求。 因此,您难道不是真的只遇到一个问题(线程)并在该问题仍然存在时将其隐藏:主要是多个线程,上下文切换,死锁等吗? 必须有一些我仍然不明白的细节。




12
AsyncTask在概念上确实存在缺陷吗?还是我只是想念一些东西?
我已经研究了这个问题好几个月了,并提出了不同的解决方案,我不满意,因为它们都是大型黑客。我仍然不敢相信,一个存在设计缺陷的类将其纳入了框架,并且没有人在谈论它,所以我想我肯定一定会丢失一些东西。 问题出在哪里AsyncTask。根据文档吧 “允许执行后台操作并在UI线程上发布结果,而无需操纵线程和/或处理程序。” 然后,该示例继续说明如何showDialog()在中调用某些示例性方法onPostExecute()。但是,这似乎完全是我想做的,因为显示对话框始终需要引用有效对象Context,而AsyncTask 绝不能持有对上下文对象的强引用。 原因很明显:如果活动被破坏而触发了任务,该怎么办?这可能一直发生,例如因为您翻转了屏幕。如果该任务将保留对创建它的上下文的引用,则您不仅会保留一个无用的上下文对象(该窗口将被破坏,并且任何 UI交互都会失败,并带有异常!),您甚至可能会冒险创建一个内存泄漏。 除非我的逻辑在这里有缺陷,否则这将转化为:onPostExecute()完全没有用,因为如果您无权访问任何上下文,在UI线程上运行此方法有什么好处?您在这里不能做任何有意义的事情。 一种解决方法是不将上下文实例传递给AsyncTask,而是传递一个Handler实例。这行得通:由于Handler松散地绑定了上下文和任务,因此您可以在它们之间交换消息而不会冒泄漏的风险(对吗?)。但这意味着AsyncTask的前提是错误的,即您不必费心处理程序。由于您是在同一个线程上发送和接收消息,因此这似乎在滥用Handler(您在UI线程上创建消息,并在同样在UI线程上执行的onPostExecute()中通过它发送消息)。 最重要的是,即使有了这种解决方法,您仍然面临这样的问题:当上下文被销毁时,您没有记录它触发的任务。这意味着在重新创建上下文时(例如,在屏幕方向更改后),您必须重新启动所有任务。这是缓慢且浪费的。 我对此的解决方案(在Droid-Fu库中实现)是WeakReference在唯一的应用程序对象上维护s从组件名称到其当前实例的映射。每当AsyncTask启动时,它都会在该映射中记录调用上下文,并且在每个回调中,它将从该映射中获取当前上下文实例。这样可以确保您永远不会引用过时的上下文实例,并且始终可以访问回调中的有效上下文,从而可以在其中进行有意义的UI工作。它也不会泄漏,因为引用很弱,并且在不再存在给定组件的实例时将其清除。 尽管如此,这是一个复杂的解决方法,并且需要对某些Droid-Fu库类进行子类化,这使其成为一种非常侵入性的方法。 现在我只想知道:我只是大量丢失了东西还是AsyncTask确实完全有缺陷?您的经验如何处理?您是如何解决这些问题的? 感谢您的输入。

10
为什么必须wait()始终处于同步块中
我们都知道,为了调用Object.wait(),必须将此调用放置在同步块中,否则将IllegalMonitorStateException引发。但是,进行此限制的原因是什么?我知道这wait()会释放监视器,但是为什么我们需要通过使特定块同步来显式获取监视器,然后通过调用来释放监视器wait()? 如果可以wait()在同步块之外调用并保留其语义-挂起调用者线程,可能造成什么损害?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.