Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/163.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/151.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在此上下文中,Thread::yield()是什么意思?_C++_Syntax - Fatal编程技术网

C++ 在此上下文中,Thread::yield()是什么意思?

C++ 在此上下文中,Thread::yield()是什么意思?,c++,syntax,C++,Syntax,我试图理解一个类,这是我们必须完成的任务的一部分,但我不理解一些语法: void sleep() { Thread::yield(); } // implicit unlock() Thread::yield()是什么;什么意思?那是哪根线?此线程对象的代码中没有声明。什么是: 这可能意味着您正在查看的函数是从线程派生的,睡眠只是将“睡眠”的责任委托给父类的静态屈服函数。但是,在确定之前,我们确实需要了解更多。因此基本上,:意味着您正在对Thread类调用

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

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

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

这可能意味着您正在查看的函数是从
线程
派生的,
睡眠
只是将“睡眠”的责任委托给父类的静态
屈服
函数。但是,在确定之前,我们确实需要了解更多。

因此基本上,
意味着您正在对Thread类调用一个静态类方法(注意,您不必创建类Thread的实例来调用该方法)

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

调用

Thread::yield();
表示对名为yield的方法的调用,该方法包含在
Thread
类或命名空间中(它可以是仅包含在命名空间中的全局方法)。顾名思义。 在项目中搜索线程,您将找到它的确切内容。名为yield的方法应该出现在
线程
类或命名空间中

什么是:

::是范围解析运算符

C++标准n3337§3.4.3限定名称查找

可以引用类或命名空间成员或枚举器的名称 在应用于 表示其类、命名空间或名称的嵌套名称说明符 枚举。如果在 嵌套名称说明符前面没有decltype说明符lookup 前面的名称的::只考虑名称空间、类型和 专门化为类型的模板。如果找不到该名称 指定命名空间或类、枚举或依赖类型 程序格式不正确。[示例:

-[结束示例]


需要更多的上下文…什么是
线程
?在众多C++线程库中的某个类?您自己开发的类?在此上下文中,
X::Y()
意味着调用类型为
X
的名为
Y
的静态方法。因此,下一步是转到
Y
的定义,看看它的作用。@Jon它也可以是一个包含在线程名称空间中的全局方法,也可以在派生类成员函数中显式调用基类成员函数。关键是因为没有足够的上下文,所以不可能说出来。我觉得很好笑的是,这个标题问“在这个上下文中”,而没有给出任何上下文。
class A {
public:
    static int n;
};

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