代码之家  ›  专栏  ›  技术社区  ›  shaz

C++单线程问题

  •  0
  • shaz  · 技术社区  · 14 年前

    我有一个C++独生子,它作为一个单独的线程运行。此singleton是从库提供的基类派生的,它重写方法onlogon(…)。OnLogon方法是同步的,它希望立即知道我们是否接受登录尝试。

    问题是我们需要通过消息将登录信息传递给安全服务器。我们可以向安全服务器侦听器(一个单独的线程)注册回调,以获取我们发送的登录验证消息的结果。我的问题是,如何阻止OnLogon方法,这样我就可以让在安全服务器侦听器线程中注册的回调唤醒线程,然后如何以线程安全的方式访问从安全服务器返回的响应(即,我需要能够处理多个并发登录请求)。

    我受够了。

    2 回复  |  直到 14 年前
        1
  •  2
  •   Amardeep AC9MF    14 年前

    使用空信号灯。将凭证发送到安全服务器之后,获取信号量。因为它将为空,所以会阻止执行。然后将回调函数发布到信号量。然后在原始线程上恢复执行。

    由于回调通常允许将匿名值作为参数传递,因此可以注册指向可以用响应填充的数据结构的指针。

        2
  •  0
  •   shaz    14 年前

    我最终选择了Boost::Promise和Boost::Unique_Future。它非常适合我的需要。

    http://www.boost.org/doc/libs/1_43_0/doc/html/thread/synchronization.html#thread.synchronization.futures