标签: blocking

如何找出被阻止的SQL查询以及阻止它们的内容?

我正在尝试优化一些慢速网页,我的猜测是问题与SQL阻塞有关(似乎不是Web服务器或数据库服务器上的CPU或I/O利用率问题).找出哪些查询被阻止以及哪些查询正在执行阻止的最快方法是什么?

sql sql-server optimization performance blocking

7
推荐指数
2
解决办法
9278
查看次数

Mysql SELECT FOR UPDATE - 奇怪的问题

我有一个奇怪的问题(至少对我来说:))与MySQL的锁定工具.

我有一张桌子:

create table `test` (  
  `id` int(11) NOT NULL AUTO_INCREMENT,  
  PRIMARY KEY (`id`)  
) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=latin1
Run Code Online (Sandbox Code Playgroud)

有了这些数据:

+ ---- +
| id |
+ ---- +
| 3 |
| 4 |
| 5 |
| 6 |
| 7 |
| 8 |
| 10 |
| 11 |
| 12 |
+ ---- +

现在我有2个客户端在开头执行这些命令:

set autocommit = 0;
设置会话事务隔离级别可序列化;
开始;

现在最有趣的部分.第一个客户端执行此查询:(意图插入id等于9的行)

SELECT*from test where id = 9 FOR UPDATE;
空集(0.00秒)

然后第二个客户端做同样的事情:

SELECT*from test where …

mysql locking blocking

7
推荐指数
1
解决办法
6162
查看次数

Java BufferedReader readline阻塞?

我想发一个HTTP请求,然后按照草图在这里得到响应:

URLConnection c = new URL("http://foo.com").openConnection();
c.setDoOutput(true);

/* write an http request here using a new OutputStreamWriter(c.getOutputStream) */

BufferedReader reader = new BufferedReader(new InputStreamReader(c.getInputStream));
reader.readLine();
Run Code Online (Sandbox Code Playgroud)

但我的问题是,如果我发送的请求需要很长时间才能收到响应,那么上面的调用reader.readLine()会发生什么?此进程是否会在CPU上保持运行/可运行,还是会从CPU中取出并在有IO被读取时被通知唤醒并再次运行?

如果它停留在CPU上,可以做些什么让它下来并在以后得到通知?

java io networking blocking bufferedreader

7
推荐指数
2
解决办法
1万
查看次数

如何在所有和任何其他javascript运行后运行jQuery函数

我有一个托管在CMS(Squarespace)上的照片库页面,它有一些自己的脚本,可以异步加载缩略图.

然而,实际的大图像没有预加载,所以我决定将自己的脚本添加到混合中,只是让浏览器将这些较大的图像加载到后台的缓存中,如下所示:

(function($) {
  var cache = [];
  // Arguments are image paths relative to the current page.
  $.preLoadImages = function() {
    var args_len = arguments.length;
    for (var i = args_len; i--;) {
      var cacheImage = document.createElement('img');
      cacheImage.src = arguments[i];
      cache.push(cacheImage);
    }
  }
})(jQuery)

$(window).load(function(){
$.preLoadImages(
    "/picture/1.jpg",
    "/picture/2.jpg", //etc.
   );
});
Run Code Online (Sandbox Code Playgroud)

我将我的代码放在$(window).load()中,因为这是一个后台脚本,它甚至根本不运行,它只是为了提高性能.

但是,我认为这个脚本以某种方式阻止了CMS自己的缩略图预加载脚本.

我对吗?最重要的是,有没有办法规定我的脚本只在页面上的所有其他脚本运行后运行?

干杯

javascript jquery asynchronous blocking preloading

7
推荐指数
1
解决办法
3278
查看次数

从方法中删除阻止

这是功课.

我不想要解决方案,只需要少量的链接或想法.

简单地说我想做的是,

简单的例子:

public class Example
{
    public void method()
    {
           int x = doThat();
           //Call other methods which do not depend on x
           return;
    }
}
Run Code Online (Sandbox Code Playgroud)

doThat()是一种已知耗时的方法,这会导致程序阻塞,直到结果返回.我想使用此Object的不同方法,但程序frozen直到doThat()完成.这些不同的方法不必从method()本例中使用的方法调用,但可能来自对象外部.

我想过使用线程但是如果我有大量的对象(1000+),这可能不会非常有效(如果我错了请纠正我).我想如果我使用线程,我必须为每个对象使用一个线程?

除了线程之外还有其他方法可以使调用对象在调用时不被阻塞doThat();吗?如果线程是唯一的方法,你能提供链接吗?

知道这样的问题得到了投票我将接受任何downvotes.但请只是一个链接将是伟大的.

提前致谢.我希望问题符合规则.

java multithreading blocking

7
推荐指数
1
解决办法
308
查看次数

如何在Javascript中编写阻塞同步方法?

我试图嘲笑一种方法,这种方法需要很长时间才能用于测试,但是无法在Javascript中找到一种很好的方法.除了编写一个非常长的for循环之外还有什么好方法

javascript synchronous blocking

7
推荐指数
1
解决办法
5568
查看次数

python线程模块中Event和Lock的区别是什么?

难道EventLock做这些场景是一回事吗?

class MyThread1(threading.Thread):
    def __init__(event):
        self.event = event

    def run(self):
        self.event.wait()
        # do something
        self.event.clear()
Run Code Online (Sandbox Code Playgroud)

另一个:

class MyThread2(threading.Thread):
    def __init__(lock):
        self.lock = lock

    def run(self):
        self.lock.acquire()
        # do something
        self.lock.release()
Run Code Online (Sandbox Code Playgroud)

python blocking python-multithreading

7
推荐指数
2
解决办法
2864
查看次数

使用Smalltalk中的超时读取文件流(命名管道)

我也将它发布到了Squeak Beginners列表中 - 我一定会确保从那里得到任何答案:)

我正在使用Squeak 4.2并处理命名管道连接的smalltalk端,该连接使用以下命令向命名管道服务器发送消息:

    msg := 'Here''s Johnny!!!!'. 
    pipe nextPutAll: msg; flush. 
Run Code Online (Sandbox Code Playgroud)

然后它应该收到一个确认,它将是收到的消息的3​​2字节md5哈希值(smalltalk应用程序随后可以验证).命名管道服务器可能已经消失或者无法处理请求,因此我想在读取确认时设置超时.我试过用这个:

    ack := [ pipe next: 32 ] valueWithin: (Duration seconds: 3) onTimeout: [ 'timeout'. ]. 
Run Code Online (Sandbox Code Playgroud)

然后使管道服务器人为地暂停以测试代码.但是smalltalk线程在读取时阻塞并且不进行(即使在超时之后),但是如果我然后让管道服务器发送正确的响应(例如在5秒延迟之后),则为'ack'的值'是'超时'.显然超时完成了它应该做的事情,但无法"解锁"管道上的阻塞读取.

有没有办法实现这一点,即使阻止FileStream读取?如果可能的话,我宁愿避免忙碌等待有32个字符可用.

timeout smalltalk squeak named-pipes blocking

7
推荐指数
1
解决办法
306
查看次数

openmpi中的Immidiate与同步通信

关于同步 - 异步的概念,我在这里从阻塞和非阻塞操作(在OpenMPI中)的上下文中略微混淆了:

  • 链路1 :MPI_Isend不一定异步(这样它可以同步的?)

  • 链接2 :MPI_Isend()MPI_Irecv()是MPI的ASYNCHRONOUS通信原语.

我已经完成了之前的同步 - 异步 - 阻塞 - stackoverflow上的非阻塞问题(异步与非阻塞),但对我没有帮助.我所知道的 :

那么如何以及为什么MPI_ISEND阻止(链接1)以及阻止(链接2)?这是异步和同步的意思MPI_Isend吗?

类似引起混淆关于MPI_Ssend&MPI_Issend中,由于小号在MPI_ 小号 SEND装置同步(或阻塞),并且: -

  • MPI_Ssend:同步发送块直到远程进程收到数据并且发送方收到ack,
  • MPI_Issend:表示立即同步发送

也是 mmediate是非阻塞的,那么,怎样才能MPI_ IS SEND是小号 ynchronous&回到 mmediately?

我想在阻塞和非阻塞OpenMPI通信的上下文中异步和同步需要更清晰.在这方面的实际例子或类比将是非常有用的.

asynchronous mpi blocking openmpi

7
推荐指数
1
解决办法
2233
查看次数

发送一系列命令并等待响应

我必须更新连接到串行端口的设备上的固件和设置.由于这是通过一系列命令完成的,因此我发送命令并等待直到我收到答案.在answere(多行)里面,我搜索一个字符串,指示操作是否成功完成.

Serial->write(“boot”, 1000);
Serial->waitForKeyword(“boot successful”);
Serial->sendFile(“image.dat”);
…
Run Code Online (Sandbox Code Playgroud)

所以我为这个阻塞读/写方法创建了一个新的Thread.在线程内部我使用了waitForX()函数.如果我调用watiForKeyword(),它将调用readLines()直到它检测到关键字或超时

bool waitForKeyword(const QString &keyword)
{
    QString str;

    // read all lines
    while(serial->readLines(10000))
    {
        // check each line
        while((str = serial->getLine()) != "")
        {
            // found!
            if(str.contains(keyword))
                return true;
        }
    }
    // timeout
    return false;
}
Run Code Online (Sandbox Code Playgroud)

readLines()读取所有可用的东西并将其分成行,每行放在一个QStringList中,并获取一个我调用getLine()的字符串,它返回列表中的第一个字符串并删除它.

bool SerialPort::readLines(int waitTimeout)
{
if(!waitForReadyRead(waitTimeout))
{
    qDebug() << "Timeout reading" << endl;
    return false;
}

QByteArray data = readAll();
while (waitForReadyRead(100))
    data += readAll();

char* begin = data.data();
char* ptr = strstr(data, "\r\n");

while(ptr != NULL) …
Run Code Online (Sandbox Code Playgroud)

c++ qt serial-port blocking

7
推荐指数
1
解决办法
3502
查看次数