【问题标题】:Is it possible to execute function in separate thread in gsoap?是否可以在 gsoap 的单独线程中执行函数?
【发布时间】:2013-10-22 07:59:57
【问题描述】:

现在有 C++ 编写的服务器(gsoap)。我有 c# 应用程序(c# 4.0,winforms)。我从该服务生成 wsdl。所以我可以在我的应用程序中调用一些函数。

但此功能的持续时间超过一小时。我认为,最好的方法是:

1) 我在应用程序的线程中调用此函数。

2) 另一个人在其应用程序的单独线程中调用此函数。

但是这个人告诉我这是不可能的。她说,“在 gsoap 中没有线程这样的功能”

这是真的吗?我不明白为什么这是不可能的..

【问题讨论】:

    标签: c# c++ wcf soap gsoap


    【解决方案1】:

    1) 我在应用程序的线程中调用此函数。

    2) 另一个人在其应用程序的单独线程中调用此函数。

    如果您所说的应用程序是指 Web 服务客户端应用程序,那么简短的回答是否定的,它本身不会导致 gsoap 处理多个线程上的请求。 gsoap 不提供任何开箱即用的多线程功能。在客户端应用程序中启动单独的线程不会在 (gsoap) 服务器上启动相应的线程。

    尽管可以使用多个线程来处理来自多个客户端的请求,但您的预感是正确的。但是,您需要在 gsoap 应用程序中自己创建和管理这些线程。您可能会发现此讨论很有帮助 - gSOAP Multithreading

    【讨论】:

    • 别人只为一个函数创建线程是不是很困难? (这意味着这个函数在gsoap中总是处于单独的线程中。我可以调用另一个函数(快速)并且这个函数会完整吗?)
    • 在这种情况下,一个函数的一个专用线程比每次调用该函数都有一个新线程要棘手。虽然这一切都取决于您对 pthreads 库的经验。
    【解决方案2】:

    当您有一个运行了一个小时或更长时间的服务调用时...修改您的服务接口不是更好吗? 您可以返回某种“id”(整数,或者可能是 GUID)。 并调用IsFinished(id),返回当前状态。 当 IsFinished 返回 true 时,用户可以通过 GetResult(id) 调用检索结果。

    这是在界面方面的更多工作,但也许它使您的服务器更易于维护。它在客户端更干净。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-08
      • 1970-01-01
      • 2011-01-04
      相关资源
      最近更新 更多