【问题标题】:How to stop method from executing before the last one finishes如何在最后一个完成之前停止方法执行
【发布时间】:2012-11-01 01:51:00
【问题描述】:

我有 3 节课

  • 查看类
  • 请求类
  • 响应类

Ia 从我的视图类中调用我的请求类中的两个方法;

[eRequests GetM:IdString];
[eRequests GetY:IdString SubID:subIdString];

我的线程开始执行第一行,并在它的进程中进行到一半,然后下一个请求甚至在第一个请求返回之前就开始了。

我想阻止这种情况发生,但我不确定如何进行。

阻止我的是这样的请求将通过这些步骤

  1. 调用请求方法 - 在 ViewClass 中
  2. 创建数据包并发送请求,接收从数据库返回的数据 - 在 Requestclass 中
  3. 将数据发送到 ResponseClass - 在 Requestclass 中
  4. 解码数据并将相关信息发送回 ViewClass 中的接收器方法 - 在响应类中

我一直坚持的事情是当线程返回视图类但在不同的方法中我如何返回第二个请求?

无论如何,如果有人可以提供一些帮助,让我一次执行一个方法调用,将不胜感激!

【问题讨论】:

    标签: ios multithreading methods


    【解决方案1】:

    您的描述非常混乱。执行发布代码的“我的线程”是什么?是请求线程还是响应线程?为什么需要“回到第二个请求”?步骤 1-4 试图解释是 Response 对象正在回调 View,然后在下一句中再次谈论 Request?那么它是哪个线程呢?

    从您使用的单词来看,我只是猜测您正在进行简单的竞争条件,这意味着 eRequest 是一个共享资源,因此需要互斥

    @synchronized(eRequests) {
     [eRequests GetM:IdString];
     [eRequests GetY:IdString SubID:subIdString];
    }
    

    但我仍然不明白“回到第二个请求”部分。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多