题目
关于C++11多线程,下列说法中错误的是()A. C++11标准通过thread类模板创建多线程。B. 在创建线程对象时,可以为线程传入参数。C. 线程对象之间可以复制拷贝。D. detach()函数可以分离线程和线程对象。
关于C++11多线程,下列说法中错误的是()
A. C++11标准通过thread类模板创建多线程。
B. 在创建线程对象时,可以为线程传入参数。
C. 线程对象之间可以复制拷贝。
D. detach()函数可以分离线程和线程对象。
题目解答
答案
C. 线程对象之间可以复制拷贝。
解析
本题考查C++11多线程编程中std::thread类的基本特性,需掌握以下关键点:
- 线程对象的创建与参数传递:
thread类支持通过构造函数创建线程并传入参数。 - 线程对象的不可复制性:
std::thread对象禁止复制和赋值,以避免资源管理冲突。 - 线程分离机制:
detach()方法用于分离线程,使其独立运行,解除与线程对象的绑定关系。
错误选项的核心在于线程对象的不可复制性,需结合std::thread的设计原则进行判断。
选项分析
A. C++11标准通过thread类模板创建多线程
正确。std::thread是C++11提供的标准线程类,通过构造函数启动新线程。
B. 在创建线程对象时,可以为线程传入参数
正确。std::thread的构造函数支持传递函数和参数,例如:
std::thread t(func, arg1, arg2);
C. 线程对象之间可以复制拷贝
错误。std::thread的复制构造函数和赋值运算符被显式删除,禁止线程对象的复制。若尝试复制,编译器会报错。例如:
std::thread t1(func);
std::thread t2 = t1; // 编译错误:无法复制线程对象
D. detach()函数可以分离线程和线程对象
正确。调用thread::detach()后,线程对象与实际线程分离,后续操作仅影响对象本身,不影响运行中的线程。