Thread :: yield()在这个上下文中意味着什么?

时间:2014-09-02 22:42:30

标签: c++ syntax

我正在尝试理解一个类,这是我们必须完成的任务的一部分,但我不理解一些语法:

void sleep() 
    { 
        Thread::yield(); 
    } // implicit unlock()

Thread :: yield();意思?那个线程是什么?此Thread对象的代码中没有声明。什么是 :: ?

3 个答案:

答案 0 :(得分:2)

致电

Thread::yield();

表示调用名为 yield 的方法,该方法包含在Thread类或名称空间中(它可以是仅包含在名称空间中的全局方法)。名称​​ yield 表示it is a call made to give up the CPU cycles and enable other threads running。 在您的项目中搜索主题,您会发现它究竟是什么。名为 yield 的方法应存在于Thread类或命名空间中。

  

什么是::?

::是范围解析运算符

C ++标准版n3337 § 3.4.3合格名称查找

  

可以引用类或命名空间成员或枚举器的名称   在:: scope resolution operator(5.1)应用于之后   nested-name-specifier,表示其类,名称空间或   列举。如果是:: scope解析运算符   nested-name-specifier之前没有decltype-specifier,lookup   之前的名称::仅考虑名称空间,类型和   专业化类型的模板。如果找到的名称没有   指定命名空间或类,枚举或依赖类型,   程序不正确。[例如:

class A {
public:
    static int n;
};

int main() {
    int A;
    A::n = 42; // OK
    A b; // ill-formed: A does not name a type
}
  

-end example]

https://stackoverflow.com/a/9338301/1141471

答案 1 :(得分:0)

可能这意味着您正在查看的函数派生自Thread,而sleep仅仅是将“休眠”的责任委托给父类的静态yield函数。但是,在我们确定之前,我们确实需要看到更多。

答案 2 :(得分:0)

所以基本上::意味着你在Thread类上调用静态类方法(注意你不必创建类Thread的实例来调用该方法)。

yield操作使调用sleep方法的线程产生执行到其他等待线程。基本上该线程暂停,允许其他等待线程运行。操作系统根据线程优先级和其他线程的状态重新安排将来运行的休眠线程。