我看到了一个关于为什么"民意调查不好"的问题.在最小化一个线程使用的处理器时间量方面,进行自旋等待(即轮询while循环中所需的更改)或等待内核对象(例如,windows中的内核事件对象)会更好吗? ?
对于上下文,假设代码将需要在任何类型的处理器,单核,超线程,多核等上运行.还假设轮询或等待的线程无法继续,直到轮询结果令人满意为止轮询而不是等待.最后,线程开始等待(或轮询)与满足条件之间的时间可能从很短的时间到很长的时间不等.
由于操作系统可能在"等待"的情况下更有效地"轮询",我不希望看到"等待只是意味着其他人做投票"的论点,这是旧闻,并不一定100%准确.
我有一个fork()用于创建子进程的程序.我已经看到了各种wait()用于在关闭之前等待子进程结束的示例,但是我想知道我能做些什么来简单地检查文件进程是否仍在运行.
我基本上有一个无限循环,我想做一些像:
if(child process has ended) break;
我怎么能这样做?
如果这是显而易见的,请原谅我.
我在页面上有一个未知数量的元素,我需要一次循环一个并执行操作.但是,我需要循环暂停,直到元素上使用的函数完成,然后继续下一次迭代.
我尝试在$ .each循环中执行此操作,但它快速启动命令并完成而无需等待它们完成.
有任何想法吗?
$('elem').each(function(){
$(this).fadeIn().wait(5000).fadeOut();
});
Run Code Online (Sandbox Code Playgroud)
这就是我所拥有的,非常简单.我从这里得到了wait()函数:jquery cookbook site.
问题是,循环不等待 - 实际命令按预期工作,只是它们一次全部消失.
任何帮助表示感谢,谢谢.
编辑:执行此操作后,我可能希望再次执行循环,以便elems列表将按顺序再次淡入/淡出
EDIT2:从那以后得到了1.4.2 jQuery lib,使用的是1.3.2,因此自定义了wait()函数.现在使用lobstrosity提到的delay().管理从他的答案拼凑出一些接近我需要的东西,感谢lobstrosity :).
我有一个具有传入作业队列的线程(LinkedList包含作业说明).wait()当没有工作要做时,线程会阻塞队列.外部作业调度程序对象notify()在将新作业放入队列时将其唤醒.
在关闭我的程序时,我调用interrupt()线程.InterruptedException当线程等待工作时,这会引发wait().我的问题是:如果我在没有阻塞但是做某种工作的情况下中断线程会发生什么,处理后的项目是队列中的最后一个(所以队列现在是空的)并且执行isInterrupted()在设置中断标志之前超过了检查所以wait()再次打电话?它会抛出一个InterruptedException因为已经设置了中断标志还是线程永远等待,因为新的作业永远不会到达队列并且没有人可以中断等待?
嗨我在我的脚本中有2个ajax调用,我需要它们运行asnyc来腾出时间,但我需要第二个等到第一个完成.
$.ajax({
type: "POST",
url: "getText.asmx/ws_getText",
data: parO1,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (msg) {
alert(msg.d.data);
}
, error: function () {
chyba("chyba v požadavku", "df");
}
});
if (parO2.length > 0) {
$.ajax({
type: "POST",
url: "getText.asmx/ws_getText",
data: parO2,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (msg) {
/*WAIT UNTIL THE FIRST CALL IS FINISHED AND THAN DO SOMETHING*/
}
, error: function () {
chyba("chyba v požadavku", "df");
}
});
Run Code Online (Sandbox Code Playgroud)
那么任何想法?谢谢
我已经读过你应该Object.wait()在一个while循环中用Java调用它.原因是这个线程可能被唤醒,你等待通知的条件仍然是假的(虚假的唤醒).
怎么样Object.wait(long timeout).在这里,您不希望循环该条件,因为您希望它在指定的时间后超时.但是如果你不把它放在一个循环中那么你怎么能确保它不会被提前唤醒呢?
在java selenium-webdriver包中,有一个FluentWait类:
每个FluentWait实例定义等待条件的最大时间量,以及检查条件的频率.此外,用户可以将等待配置为在等待时忽略特定类型的异常,例如在搜索页面上的元素时的NoSuchElementExceptions.
换句话说,它不仅仅是隐式和显式等待,还可以让您更好地控制等待元素.它可以非常方便,绝对有用例.
在python selenium包中有什么类似的,或者我应该自己实现它?
(我查看了Waits的文档- 没有任何内容).
为什么wait,notify和notifyAll方法放入Object,而不是在一些分隔的类?
请注意,这个问题不是关于将它们移到Thread课堂上,我只是想知道为什么他们会乱扔垃圾Object,而不是一些新的Monitor课程.
我看到了这个想法的以下缺点:
this并且<MyClass>.class变为无效的监视器.因此,我们可以从每个对象中移除5个方法,带来一点祸患.或不?
由于我无法发表评论,因此我不得不撰写这篇文章。我得到下面的代码,它延迟/恰好延迟1秒或1000毫秒-
let n = 5;
for (let i=1; i<n; i++)
{
setTimeout( function timer()
{
console.log("hello world");
}, i*1000 );
}Run Code Online (Sandbox Code Playgroud)
但是,如何将其延迟* 1000秒而不是固定的1000毫秒,所以等待取决于迭代次数?
例如,如果n = 5,那么我希望在第一次迭代中将循环延迟设为1秒。在第二次迭代中2秒,依此类推...最终延迟将为5秒。
我正在写一个迷你shell(不,不是为了学校:P;为了我自己的乐趣),大部分基本功能现在已经完成,但我在尝试处理SIGTSTP时遇到困难.
据推测,当用户按下时Ctrl+Z,SIGTSTP应该被发送到shell的Foreground进程(如果存在),并且Shell应该正常继续.
创建每个进程后(如果它是Foreground进程),以下代码等待:
if(waitpid(pid, &processReturnStatus, WUNTRACED)>0){//wait stopped too
if(WIFEXITED(processReturnStatus) || WIFSIGNALED(processReturnStatus))
removeFromJobList(pid);
}
Run Code Online (Sandbox Code Playgroud)
我正在处理如下信号:
void sigtstpHandler(int signum)
{
signum++;//Just to remove gcc's warning
pid_t pid = findForegroundProcessID();
if(pid > -1){
kill(-pid, SIGTSTP);//Sending to the whole group
}
}
Run Code Online (Sandbox Code Playgroud)
会发生什么事情,当我按下时Ctrl+Z,子进程确实被挂起(ps -all用于查看进程的状态)但我的shell挂起waitpid它永远不会返回,即使我通过了WUNTRACED标志,据我所知,它应该waitpid返回时这个过程也停止了.
那么我可能做错了什么呢?还是我理解waitpid的行为不正确?
注意:
-findForegroundProcessID()返回正确的pid; 我仔细检查了一下.
- 我正在改变每个进程的组,直到我fork
-Handling Ctrl+C工作正常 -
如果我在shell挂起后使用另一个终端发送SIGCONT,子进程恢复其工作并且shell最终收获它.
- 我正在捕捉SIGTSTP,只要我读到(并测试过)就可以捕获. - 我尝试使用waitid而不是waitpid以防万一,问题仍然存在.
编辑:
void sigchldHandler(int signum)
{
signum++;//Just to remove the warning
pid_t pid; …Run Code Online (Sandbox Code Playgroud) wait ×10
java ×4
concurrency ×2
javascript ×2
jquery ×2
notify ×2
ajax ×1
asynchronous ×1
c ×1
c++ ×1
each ×1
fork ×1
linux ×1
loops ×1
parent ×1
performance ×1
polling ×1
python ×1
selenium ×1
shell ×1
signals ×1
synchronous ×1