标签: wait

等待多个SwingWorkers

请考虑以下代码片段:

import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.lang.reflect.InvocationTargetException;
import javax.swing.*;

public class TestApplet extends JApplet
{
    @Override
    public void init()
    {
        try
        {
            SwingUtilities.invokeAndWait(new Runnable()
            {
                @Override
                public void run()
                {
                    createGUI();
                }
            });
        }
        catch(InterruptedException | InvocationTargetException ex)
        {
        }
    }

    private void createGUI()
    {
        getContentPane().setLayout(new FlowLayout());
        JButton startButton = new JButton("Do work");
        startButton.addActionListener(new ActionListener()
        {
            @Override
            public void actionPerformed(ActionEvent ae)
            {
                JLabel label = new JLabel();
                new Worker(label).execute();
            }
        });
        getContentPane().add(startButton);
    }

    private class Worker extends SwingWorker<Void, …
Run Code Online (Sandbox Code Playgroud)

java swing multithreading swingworker wait

11
推荐指数
1
解决办法
6620
查看次数

waitpid阻止它不应该

我正在写一个迷你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)

c linux shell signals wait

11
推荐指数
1
解决办法
7170
查看次数

等待内部方法直到捕获事件

我在C#中遇到了这个问题.我做了一个方法,从一个dll调用一个函数,它被称为Phone.GetLampMode(); Now Phone.GetLampMode并不返回任何东西.在' onGetLampModeResponse'事件中返回数据.有没有办法可以在我的方法中等待,直到我从onGetLampModeResponse事件中获取数据?

public bool checkLamp(int iLamp)
{
    Phone.ButtonIDConstants btn = new Phone.ButtonIDConstants();
    btn = Phone.ButtonIDConstants.BUTTON_1;
    btn += iLamp;
    Phone.GetLampMode(btn, null);

    return true;
}

private void Phone_OnGetLampModeResponse(object sender, Phone.GetLampModeResponseArgs e)
{
    var test = e.getLampModeList[0].getLampMode.ToString();    
}
Run Code Online (Sandbox Code Playgroud)

c# events wait

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

linux内核中wait_queue_head和wait_queue之间的区别

我可以找到很多关于的例子wait_queue_head.它可以作为一个信号,创建一个wait_queue_head,有人可以使用它睡觉,直到其他人开始它.

但我无法找到一个使用wait_queue自身的好例子,据说与它非常相关.

有人可以举例,还是在他们的引擎盖下?

linux queue wait

11
推荐指数
2
解决办法
6634
查看次数

有效地等待线程池中的所有任务完成

我目前在我的线程池中有一个带有x worker 的程序.在主循环Ÿ任务分配给工人来完成,但之后的任务被发送出去,我必须与节目之前之前等待所有任务完成.我相信我目前的解决方案效率低下,必须有更好的方法等待所有任务完成,但我不知道如何去解决这个问题

// called in main after all tasks are enqueued to 
// std::deque<std::function<void()>> tasks
void ThreadPool::waitFinished()
{
    while(!tasks.empty()) //check if there are any tasks in queue waiting to be picked up
    {
        //do literally nothing
    }
}
Run Code Online (Sandbox Code Playgroud)

更多信息:

线程池结构

//worker thread objects
class Worker {
    public:
        Worker(ThreadPool& s): pool(s) {}
        void operator()();
    private:
        ThreadPool &pool;
};

//thread pool
class ThreadPool {
    public:
        ThreadPool(size_t);
        template<class F>
        void enqueue(F f);   
        void waitFinished();
        ~ThreadPool();
    private:
        friend class Worker; …
Run Code Online (Sandbox Code Playgroud)

c++ multithreading wait threadpool stdthread

11
推荐指数
1
解决办法
5875
查看次数

在python Scrapy中执行SplashRequest时添加等待元素

我试图在python中使用Splash for Scrapy抓取一些动态网站.但是,我发现Splash无法等待在某些情况下加载整个页面.解决这个问题的一种强力方法是增加一个大的wait时间(例如,在下面的代码片段中为5秒).但是,这非常低效,仍然无法加载某些数据(有时加载内容需要超过5秒).是否存在可以通过这些请求进行某种等待的元素条件?

yield SplashRequest(
          url, 
          self.parse, 
          args={'wait': 5},
          'User-Agent':"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36",
          }
)
Run Code Online (Sandbox Code Playgroud)

python wait scrapy scrapy-splash splash-js-render

11
推荐指数
1
解决办法
2731
查看次数

如何等待页面完全加载

我正在使用 Cypress 来测试我的水疗中心。有时页面显示得很快,有时又很慢。我需要能够检查页面加载后将显示的按钮或文本,但不想永远等待。

我一直使用过长的等待时间,但希望测试运行得更快。

let targeturl = 'http:\\something.com'
let longwait = 2500

describe('Update Case', () => {
  it('Create Case', () => {   
    cy.visit(targeturl)
    cy.wait(longwait)
    cy.get('button').contains('Create').click()
Run Code Online (Sandbox Code Playgroud)

我希望能够设置等待时间,直到显示“创建”按钮。

javascript testing wait cypress

11
推荐指数
1
解决办法
5万
查看次数

增强线程中的虚假解除阻塞

我今天在Boost线程文档中遇到了这个有趣的段落:

void wait(boost::unique_lock<boost::mutex>& lock)
Run Code Online (Sandbox Code Playgroud)

...

效果:原子调用lock.unlock()并阻止当前线程.当通过调用this-> notify_one()或this-> notify_all()或虚假地通知时,线程将解除阻塞.当线程被解除阻塞(无论出于何种原因)时,通过在等待调用返回之前调用lock.lock()来重新获取锁.如果函数以异常退出,则还可以通过调用lock.lock()来重新获取锁.

所以我感兴趣的是"虚假地"这个词的含义.为什么线程会因为虚假原因而被解除阻塞?可以做些什么来解决这个问题?

multithreading boost wait conditional-statements

10
推荐指数
1
解决办法
2665
查看次数

如何使Perl等待使用system()在后台启动的子进程?

我有一些Perl代码执行多个参数的shell脚本,为了简化,我只是假设我有这样的代码:

for $p (@a){
    system("/path/to/file.sh $p&");
}
Run Code Online (Sandbox Code Playgroud)

之后我想做更多的事情,但是我找不到等待所有子进程完成的方法,然后再继续.

将代码转换为使用fork()会很困难.是不是有更简单的方法?

linux perl wait child-process

10
推荐指数
3
解决办法
3万
查看次数

CPU使用率和Object.wait

我正在使用JProfiler来分析我的应用程序,因此,在"CPU视图"部分中,它表明花费了超过40%的CPU时间Object.wait().但据我所知,在Object.wait()CPU上没有给予等待线程.

有人可以帮助了解发生了什么以及为什么分析器显示这么多的CPU花费了Object.wait()吗?

java cpu performance profiling wait

10
推荐指数
2
解决办法
3159
查看次数