问题标签 [blocking]

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.

0 投票
4 回答
6411 浏览

javascript - 如何延迟加载外部 JS 文件(谷歌分析)?

我正在使用以下代码以阻止呈现的方式加载我的 Google Analytics(外部 javascript)。

但是,同时使用 YSlow 和 Safari Web Inspector - 网络流量清楚地表明 ga.js 脚本仍在阻止渲染。

关于如何使用 JavaScript 延迟加载 ga.js 文件的任何想法,因为上面的代码似乎没有按预期执行,直到整个页面都被渲染,这样我就不会阻止渲染?

0 投票
3 回答
632 浏览

jquery - 防止 .php 文件在 jQuery 请求页面之外加载

我有一个使用 jQuery 在另一个页面中加载的页面。我想知道的是,是否有可能以某种方式阻止对在另一个页面中加载的页面的直接访问。

0 投票
1 回答
334 浏览

sql-server-2005 - SQL Server 阻止“创建函数...”,这意味着什么?

我已使用本文https://web.archive.org/web/1/http://blogs.techrepublic%2ecom%2ecom/datacenter/?p=275中的 sql来尝试追踪导致最近在我的 sql server 2005 数据库中发生了很多阻塞。很多时候,所有返回的进程都在调用“创建函数...”,函数各不相同,但其中一些将创建相同的函数。从文章中包含的详细信息以及查看表中的内容来看,结果集是从中构建的,看起来这些创建语句通常不会被调用。这是否意味着重新编译相关函数?或者是其他东西?

谢谢你的帮助,

罗宾

0 投票
11 回答
24822 浏览

python - 块 - 将输入发送到 python 子进程管道

我正在使用 python 测试子流程管道。我知道我可以直接在 python 中执行下面的程序,但这不是重点。我只想测试管道,所以我知道如何使用它。

我的系统是 Linux Ubuntu 9.04,默认 python 2.6。

我从这个文档示例开始。

这行得通,但由于p1'sstdin没有被重定向,我必须在终端中输入内容来馈送管道。当我输入^D关闭标准输入时,我得到了我想要的输出。

但是,我想使用 python 字符串变量将数据发送到管道。首先我尝试在标准输入上写:

没用。我尝试p2.stdout.read()在最后一行使用,但它也会阻塞。我添加了p1.stdin.flush()p1.stdin.close()但它也没有工作。我然后我开始交流:

所以还是不是这样。

我注意到运行单个进程(如p1上面,删除p2)可以完美运行。并且将文件句柄传递给p1( stdin=open(...)) 也可以。所以问题是:

是否可以在不阻塞的情况下将数据传递到 python 中的 2 个或多个子进程的管道?为什么不?

我知道我可以运行一个 shell 并在 shell 中运行管道,但这不是我想要的。


更新 1:按照下面 Aaron Digulla 的提示,我现在正在尝试使用线程来使其工作。

首先,我尝试在线程上运行 p1.communicate。

好吧,没用。尝试了其他组合,例如将其更改为.write()and p2.read()。没有什么。现在让我们尝试相反的方法:

代码最终在某处阻塞。在衍生线程中,或在主线程中,或两者兼而有之。所以它没有用。如果你知道如何让它工作,如果你能提供工作代码会更容易。我在这里试试。


更新 2

Paul Du Bois 在下面回答了一些信息,所以我做了更多的测试。我已经阅读了整个subprocess.py模块并了解了它的工作原理。因此,我尝试将其完全应用于代码。

我在 linux 上,但由于我正在使用线程进行测试,所以我的第一种方法是复制在subprocess.py'scommunicate()方法上看到的确切 Windows 线程代码,但是对于两个进程而不是一个进程。这是我尝试过的完整列表:

出色地。它没有用。即使在p1.stdin.close()被调用之后,p2.stdout.read()仍然会阻塞。

然后我尝试了posix代码subprocess.py

也阻止select.select(). 通过传播prints,我发现了这一点:

  • 阅读是有效的。代码在执行过程中多次读取。
  • 写作也在工作。数据写入p1.stdin.
  • 结束时numwritesp1.stdin.close()被调用。
  • select()开始阻塞时,只有to_read一些东西,p2.stdoutto_write已经是空的了。
  • os.read()call 总是返回一些东西,所以p2.stdout.close()永远不会被调用。

两个测试的结论:关闭stdin管道上的第一个进程(grep在示例中)不会使其将其缓冲输出转储到下一个进程并死掉。

没有办法让它工作?

PS:我不想使用临时文件,我已经用文件进行了测试,我知道它可以工作。而且我不想使用窗户。

0 投票
3 回答
3948 浏览

java - Java ProcessBuilder:外部进程挂起

我正在使用 Java 的 ProcessBuilder 类来运行外部进程。进程不应在 Java 程序终止之前终止;它必须在命令/响应模式下保持活跃。

我知道如果忽略进程流很容易“堵塞”,所以我做了以下事情:程序在“读取器”线程中读取进程的组合输出和错误流,并使用“写入器”线程来管理命令. 读取器线程从进程输出中读取阻塞字符,将它们缓冲到字符串中并分派结果。编写器线程通过 PrintWriter 编写完整的“命令”行;它使用队列来确保没有两个命令写入“靠得太近”(当前为 100 毫秒),并且在前一个命令的输出完成之前不会写入新命令。在每次 println() 之后,我也会调用 flush() 和 checkError()。

该方案可以正常工作几秒钟或几分钟,然后读取器线程挂起阻塞 read()。没有错误,没有抛出异常,没有更多的流程输出。此后,没有什么可以恢复外部进程(除了重新启动它)。(顺便说一句,这发生在 Linux 和 Windows 上。)

我已经查看了 Jakarta Commons Exec 和 Plexus Utils http://plexus.codehaus.org/plexus-utils/中的代码和测试用例,但是(a)都没有给出使用长期进程的示例和( b)似乎两者都没有做任何与我所描述的基本不同的事情。

请问有人知道这里发生了什么吗?谢谢!

0 投票
4 回答
4911 浏览

c# - 如何以阻塞/同步方式下载文件?

我对 silverlight 很陌生,并且很惊讶地发现只能进行异步文件下载。好吧,我试图通过设置一个标志并等待它改变来解决这个问题。这是我的简单代码

这导致 Firefox 实际冻结(当我在开发时做其他事情时这非常烦人)(顺便说一句,对 firefox 表示敬意,因为我测试了它并且 firefox 冻结了,但我没有丢失我在恢复后在这里输入的内容)

我不明白为什么while(XmlStateStream==null){}会导致冻结。是否有锁定或易失性的某些属性(除了我已经拥有的)或者我是否处于 Silverlight 页面生命周期的错误部分或其他什么?

我真的很困惑为什么这不起作用。

另外,这是silverlight 3.0

0 投票
1 回答
291 浏览

asp.net - 如何在 DB 中组织 ASP.NET 请求锁定或行锁定

我有 asp.net 页面/处理程序来访问图像。当对图像执行第一次请求时,我将图像调整为标准尺寸(保存在磁盘上)并返回它。所以我需要锁定对图像的所有请求,除了一个。这将调整图像大小。由 URL 中的 ID 标识的图像,所以我猜每个图像需要一个锁对象(URL 中的 ID)。我的问题是如何组织这个锁模型?

我的想法是像这样 Application.Add(Request[Id], new object()); 并用它来锁定竞争线程。

此任务类似于 DB 的行锁定或集合中的锁定元素。

感谢您的重播。

0 投票
1 回答
3435 浏览

select - ncurses 和标准输入阻塞

我有组标准输入,每当用户键入并点击时select(),我想从标准输入中获取一个字符串Enter

但是 select 正在触发stdin,因为它在被击中之前准备好读取Enter,并且在极少数情况下,在输入任何内容之前。这会挂起我的程序,getstr()直到我点击Enter.

我尝试了设置nocbreak(),它真的很完美,只是屏幕上没有回显,所以我看不到我在输入什么。设置echo()不会改变这一点。

我也尝试过使用timeout(0),但结果更加疯狂并且没有用。

0 投票
1 回答
11207 浏览

jquery - jQuery UI modal dialog not blocking

I am new to javascript and jQuery. I am trying to implement a modal dialog using jQuery UI widgets.

The modal dialog shows up correctly with OK and Cancel buttons, but the dialog('open') function call does not seem to block and wait for an OK or Cancel click. For example, when I run the following code

.....on button click

The alert box is displayed first and THEN the modal dialog shows up! okToDelete is a global variable I set to false when I enter the function and set to true in the OK button callback.

Here is my dialog init function

0 投票
1 回答
606 浏览

python - 什么情况会导致东京内阁封锁

tc在 python 中使用带有模块的 Tokyo Cabinet。我以 TDB 格式存储我的数据。我希望该表仅在写入期间阻塞。不幸的是,我看到当文件以“编写器模式”打开时,其他进程无法从中读取。这是标准行为,包装问题,还是我做错了什么?或者在其他情况下操作被阻止?