标签: wait

等待函数和 CloseHandle 依赖项

我决定使用Wait Functions (WaitForSingleObject、WaitForMultipleObject 等)来正确退出线程。在这种情况下,问题是我是否需要显式调用 CloseHandle(线程句柄)以避免内存泄漏或等待函数自行清理并关闭句柄?如果CloseHandle需要显式调用,我可以再次调用“ CreateThread(相同的线程句柄)吗?我可以再次调用GetExitCodeThread()吗?”吗?”

注意:一个 StackOverFlow 问题回答了我,第二部分说我无法再次调用 GetExitCode,但它并没有澄清在等待函数后缺少调用 CloseHandle 是否会导致内存泄漏。

c++ winapi memory-leaks thread-safety wait

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

Java 等待/通知不起作用

所以我一直在用 Java 编写一个简单的等待/通知示例,但由于某种原因,我无法让它正常运行。如果有人能够看到可能是什么问题,将不胜感激!

public class ThreadDemonstration
{
private String str = null;

Thread stringCreator = new Thread(new Runnable()
{
    public void run()
    {           
        synchronized(this)
        {               
            str = "I have text";
            notify();            
        }
    }
});

private Thread stringUser = new Thread(new Runnable()
{
    public void run()
    {
        synchronized(this)
        {
            if(str == null)
            {                   
                try {
                    System.out.println("str is null, I need help from stringCreator");
                    wait();
                    System.out.println(str);
                }
                catch (InterruptedException e) 
                {
                    e.printStackTrace();
                }
            }

        }
    }
});

public static void main (String …
Run Code Online (Sandbox Code Playgroud)

java notify wait

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

Android 等待启动BluetoothSco SCO_AUDIO_STATE_CONNECTED

我遇到了 startBluetoothSco 连接速度不够快的问题。我如何等待获取 SCO_AUDIO_STATE_CONNECTED 返回值,然后继续让我的消息大声朗读。到连接状态返回时,我已经大声朗读了一半的消息。如果我睡了,那么主要活动就会停止,什么也不会发生。如您所知,我是 Android 的初学者。谢谢

android bluetooth text-to-speech wait

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

javascript setAttribute 函数

我的功能有问题setAttribute

这是我的代码

mind.SetRequest(rec_input.value);
mind.Reply();
element.setAttribute('text', mind.GetReply());
element.speak();
Run Code Online (Sandbox Code Playgroud)

element.speak()不等待setAttribute完成。

完成speak()后是否有任何函数可以调用?setAttribute

img.onload = function(){ . . . }加载后调用的函数,img是否有类似的方式可以在加载speak后调用我的函数setAttribute

javascript setattribute wait

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

Android AsyncTask 等待/排队

我有一个扩展 AsyncTask 的类,该类将消息发送到 WCF Web 服务。一条一条的简单消息可以正常工作,但是如果我在需要 30 秒才能完成的新线程上发送一条消息,那么在此过程中我发送一个快速请求,它不会执行 AsyncTask,直到长请求返回。

我认为 AsyncTask 的整个想法是这两条消息将在不同的线程上运行,因此不会堆叠?

这是我的代码:

private class RunnableTask extends AsyncTask<RunnableObj, RunnableObj, RunnableObj> {
    @Override
    protected RunnableObj doInBackground(RunnableObj... params) {
        try {
            if (params[0].requestBody != (null)) {
                params[0].request.body(new JSONObject(params[0].requestBody));
            }

            params[0].request.asVoid();

            return params[0];
        }
        catch (Throwable e) {
            params[0].handler.onFailure(e);
            e.printStackTrace();
        }

        return null;
    }

    @Override
    protected void onPostExecute(RunnableObj runnableObj) {
        super.onPostExecute(runnableObj);

        runnableObj.handler.onSuccess();
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我上面的 AsyncTask。

public void put(final String urlStr, final String requestBody, final HttpResponseHandler httpResponseHandler) {
    RunnableObj obj = new RunnableObj(); …
Run Code Online (Sandbox Code Playgroud)

queue android wait runnable android-asynctask

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

driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS) 不起作用

driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
Run Code Online (Sandbox Code Playgroud)

上面的隐式等待代码在谷歌浏览器上对我不起作用。我试过硒 2.47 和 2.53.1

java selenium wait

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

等待活动显示

目前我有一个加载活动的按钮。

该活动中有一个 ListView ,无论出于何种原因需要相当长的时间来加载(不等待数据,数据已经在内存中)。问题是,当它呈现列表时,UI 正在等待按钮被单击的位置,并且在列表完全加载之前不会更改屏幕。

我想要的是仅在加载 Activity 后才显示列表,因此至少在他们按下按钮时会发生一些事情(响应式 UI 很重要)。

目前,我对此的解决方法是生成一个线程,等待 50 毫秒,然后为我的列表设置适配器(使用 runOnUiThread)。当然,如果在某些手机上加载 Activity 的时间超过 50 毫秒,则必须加载整个列表才能再次加载该 Activity。

当前相关代码:

@Override
public void onPostResume() {
    super.onPostResume();
    new Thread(new Runnable() {
        @Override
        public void run() {
            final AdapterData data = getData();
            try {
                Thread.sleep(50);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            mActivity.runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    myAdapter = new MyAdapter(MyActivity.this, data);
                    lvMyList.setAdapter(myAdapter);
                }
            });
        }
    }).start();
}
Run Code Online (Sandbox Code Playgroud)

我只是在代码中更改了变量名称,但这无关紧要。这只是为了让您可以看到我的一般解决方案。

我觉得应该在活动完成创建时调用某种回调。我认为 onPostResume 等待活动完成加载,但这不起作用。还是挂了。

multithreading android wait

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

为什么 InterruptedException 只从 sleep() 和 wait() 等阻塞方法抛出?

如果我编写如下代码,我们不能中断或终止线程。它也不会抛出 InterruptedException。

Thread loop = new Thread(
  new Runnable() {
    @Override
    public void run() {
      while (true) {
      }
    }
  }
);
loop.start();
loop.interrupt();
Run Code Online (Sandbox Code Playgroud)

要中断这个线程,我需要修改我的代码如下:

Thread loop = new Thread(
  new Runnable() {
    @Override
    public void run() {
      while (true) {
        if (Thread.interrupted()) {
          break;
        }
        // Continue to do nothing
      }
    }
  }
);
loop.start();
loop.interrupt();
Run Code Online (Sandbox Code Playgroud)

我的问题是,

  1. 为什么 Java 的设计方式是只有在像 sleep() 和 wait() 这样的阻塞方法的情况下才会抛出InterruptedException

  2. 为什么在普通代码中,我们需要像上面的代码片段那样手动处理?为什么每当我们通过interrupt()方法将中断标志设置为 true 时,Java 不会抛出 InterruptedException ?

我已经阅读了很多关于 InterruptedException 的博客和文章,但没有找到任何令人信服的答案。

编辑

找到关于 …

java multithreading sleep wait interrupted-exception

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

time.sleep、Flask 和 I/O 等待

使用时time.sleep(),是否会阻塞 Flask 请求?

我的一个 Flask 端点启动了一个长处理子任务,并且在某些情况下,不是异步执行工作,而是可以等待任务完成并在同一个请求中返回结果。

在这种情况下,我的 Flask 应用程序启动该过程,然后等待它完成,然后返回结果。我的问题是,在调用类似(简化)时:

while True:
    if process_is_done():
        break

    time.sleep(1)
Run Code Online (Sandbox Code Playgroud)

Flask 会阻止该请求直到它完成,还是会允许其他请求在此期间到来?

python sleep wait flask

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

在 List&lt;&gt;.ForEach 方法调用中的 LINQ 表达式中使用时,等待不等待

我有一个异步函数,我必须对列表的每个元素进行异步调用。为此,我编写了这段代码:

List<string> batchItems;

batchItems.ForEach(async t => await SubmitBatchItemAsync(input, t));
Run Code Online (Sandbox Code Playgroud)

但是,这不起作用:调用 SubmitBatchItemAsync,但不等待它。

我必须将此代码更改为此代码才能使其正常工作:

List<string> batchItems;
foreach (var batchItem in batchItems)
    {
        await SubmitBatchItemAsync(input, batchItem);
    }
Run Code Online (Sandbox Code Playgroud)

这也有效,但并不完全相同,因为 Task.Wait() 与 await 的工作方式不同:

List<string> batchItems;

batchItems.ForEach(t => SubmitBatchItemAsync(input, t).Wait(CancellationToken.None));
Run Code Online (Sandbox Code Playgroud)

有谁知道为什么第一个选项不起作用,因为 LINQ 表达式支持等待?(https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/statements-expressions-operators/lambda-expressions#async-lambdas

c# foreach wait async-await

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