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

为什么线程过程应该是静态的还是成员函数

  •  3
  • Naruto  · 技术社区  · 14 年前

    为什么线程过程应该是静态的还是成员函数? 有什么正当理由吗?

    3 回复  |  直到 14 年前
        1
  •  6
  •   sharptooth    14 年前

    this

    你有

    ClassInQuestion {
       void threadFunc( int );
    }
    

    void ClassInQuestion_threadFunc( ClassInQuestion* thisObject, int );
    

    因此,除非线程过程接受指针t,否则函数的第一个参数类型为 ClassInQuestion* 它将与预期的函数签名不匹配。

        2
  •  3
  •   stefaanv    14 年前

        3
  •  2
  •   mukeshkumar    14 年前

    通常,线程过程必须由具有回调机制的线程库中的预定义函数调用。为了能够调用成员函数(不是静态的),您需要调用函数的类的对象。但是,所有可用的线程库都不支持这一点,即它们不接受将用于调用已注册函数的对象。所以所有这些函数都应该是静态的,并适当地进行类型转换。