class background_task{ public: int id; int value; background_task(int _id, int _value):id(_id),value(_value){ output(); std::cout << "initialize.\n"; } void do_something(){ std::cout << "id = " << id << std::endl; id = 2; std::cout << "do something.\n"; std::cout << "id = " << id << std::endl; } void do_something_else(){ std::cout << "value = " << value << std::endl; value = 20; std::cout << "do something else.\n"; std::cout << "value = " << value << std::endl; } void output(){ std::cout << "ID = " << id << ", value = " << value << std::endl; } // void operator() (background_task &){ void operator() (){ do_something(); do_something_else(); } }; int main() { background_task tf(1,10); tf.output(); std::thread t(tf); //tf.do_something(); //tf.do_something_else(); tf.output(); t.join(); tf.output(); }
相关推荐
2. 初始化线程池,创建固定数量的工作线程。每个工作线程在一个无限循环中检查任务队列,有任务则执行,无任务则等待。 3. 实现任务提交接口,将新任务添加到任务队列,并通知等待的线程。 4. 当不再需要线程池时...
5. **统一的初始化语法**:C++11引入了花括号初始化,既可以用作列表初始化,也可以用作聚合初始化,统一了旧有的两种初始化方式。 6. **智能指针(Smart Pointers)**:C++11标准库提供了三种智能指针:`std::unique...
type_traits库中的decltype可以用于查询表达式的类型,而初始化列表则用于简化复杂类型的初始化。模板编程也得到了加强,包括外部模板、类型别名模板、默认模板参数和变长参数模板等特性。面向对象编程在C++11中得到...
9. 列表初始化:C++11允许在使用初始化列表初始化类时,自动推导出类的构造函数,并且支持对内置类型进行列表初始化。 10. nullptr关键字:C++11提供了一个新的空指针常量nullptr,用于替代之前的NULL。nullptr是一...
1. **统一的初始化语法** - C++11引入了统一初始化语法,使用大括号初始化列表,无论是在类内还是类外,都可以用这种语法来初始化变量。 2. **auto关键字** - auto关键字的引入使得变量的类型可以自动推导,减少...
C++11 引入了**统一初始化**(Uniform initialization),它简化了对象的初始化语法,并提高了代码的可读性。 **示例:** ```cpp int x{42}; // 直接初始化 ``` #### 四、核心语言使用性的加强 ##### 4.1 类型推导...
10. 新的初始化列表:C++11 增强了初始化列表的使用,使得初始化更加统一和强大,支持列表初始化所有类型的对象。 这些知识点仅是 C++11 标准中的冰山一角,C++11 还包括更多细节和特性,它代表了 C++ 编程语言向前...
5. **统一初始化(Uniform Initialization)**:C++11引入了一种新的初始化方式,使得所有类型的初始化语法统一,减少了错误的可能性。 6. **多线程支持(Thread Library)**:C++11提供了内置的多线程库,包括`std...
1. 统一的初始化方法:在C++11之前,变量初始化通常采用赋值或构造函数两种方式。C++11引入了统一的初始化语法,如`int x = 5;`或`std::vector<int> v{1, 2, 3};`,使得初始化更加简洁且明确。 2. `auto`关键字:`...
在函数和变量声明上,C++11引入了统一的初始化方式(Uniform Initialization),通过花括号`{}`来初始化任何类型的对象,无论其是否是聚合类型。这使得初始化更加一致和清晰。 此外,C++11还引入了lambda表达式,这...
C++11还增加了对统一初始化(Uniform Initialization)的支持,使用花括号{}进行初始化,无论是基本类型、数组还是聚合类型,都可以采用统一的方式,避免了旧版中的一些陷阱和混淆。 此外,C++11对STL容器(如`std:...
7. **多线程支持(Multithreading)**:C++11标准库提供了对多线程编程的支持,包括`std::thread`,`std::mutex`,`std::future`等,使得编写并发程序更加方便。 8. **类型推断(Type inference,也称为模板推导)*...
6. **多线程支持**:C++11引入了 `<thread>` 库,提供了原生的多线程API,使得并行编程成为可能。 7. **nullptr**:为零指针提供了一个新的关键字,避免了空指针常量的混淆,提高了代码清晰度。 8. **范围基础的...
在C++11之前,声明变量时需要显式指定类型,而`auto`关键字允许编译器根据初始化表达式自动推断变量的类型,这大大简化了代码编写,尤其是在使用模板和复杂类型时。 其次,C++11加强了对智能指针(Smart Pointers)...
5. **统一的初始化语法(Uniform Initialization)**:使用花括号{}进行初始化,适用于各种类型,简化了初始化过程。 6. **nullptr关键字**:用`nullptr`代替了NULL,明确了零指针的类型,避免了隐式类型转换带来的...
6. **统一的初始化语法**:C++11引入了统一的初始化语法,如`std::vector<int> vec{1, 2, 3};`,这既可用于构造函数,也可用于初始化数组和其他容器。 7. ** constexpr关键字**:constexpr允许在编译时计算函数和...
11. **统一的初始化(Uniform Initialization)**:C++11引入花括号初始化,如`int x{5};`,可以用于各种类型的初始化,包括数组、结构体、类实例等。 12. **静态_assert**:`static_assert`在编译时检查条件,提供...
C++11标准库新增了`<thread>`头文件,提供了对多线程编程的原生支持,包括线程创建、同步原语如互斥量和条件变量等。 7. **变长参数模板(Variadic Templates)** 这一特性允许模板接受任意数量的参数,使得可以...
- 类型推断(auto):允许编译器从初始化表达式推断变量类型。 - constexpr:允许在编译时计算常量表达式的值。 - decltype:用于推断表达式的类型。 - Lambda表达式:简化了创建匿名函数对象的过程。 - 用户...