this_thread
các chức năng nhóm không gian tên truy cập chuỗi hiện tại, vì vậy khi chúng ta cần làm điều gì đó trên luồng hiện tại, chúng tôi không cần truy cập đối tượng thread
của chuỗi.
Lớp chủ đề không cung cấp quyền truy cập để sinh và ngủ, các chức năng này chỉ có ý nghĩa đối với chuỗi hiện tại và do đó có thể được tìm thấy trong không gian tên this_thread
.
Nếu muốn thông tin về một chuỗi khác, chúng ta cần thể hiện thread
của chuỗi đó, nếu chúng ta cần truy cập luồng hiện tại, chúng ta luôn có thể thực hiện điều đó thông qua các hàm trong không gian tên this_thread
.
Các tư tưởng cho việc sử dụng một không gian tên this_thread
cũng đã được giải thích trong bản dự thảo của phần mở rộng:
this_thread Namespace
Lưu ý việc sử dụng không gian tên this_thread để disambiguate khi bạn đang yêu cầu id cho chuỗi hiện tại, so với id của chuỗi con. Tên get_id cho hành động này vẫn giữ nguyên trong việc giảm dấu chân khái niệm của giao diện. Thiết kế này cũng áp dụng cho các chức năng cancellation_requested:
std::thread my_child_thread(f);
typedef std::thread::id ID:
ID my_id std::this_thread::get_id(); // The current thread's id
ID your_id my_child_thread.get_id(); // The child thread's id
bool have_i_been_canceled = std::this_thread::cancellation_requested(); // Current thread's cancellation status
bool have_you_been_canceled = my_child_thread.cancellation_requested(); // Child thread's cancellation status
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2320.html
Thêm chức năng từ this_thread
namespace thành viên như tĩnh của lớp thread
có thể đã được thực hiện, nhưng sau đó get_id
chức năng sẽ phải được gọi là một cái gì đó khác, để làm cho nó rõ ràng khác biệt với chức năng get_id
đã tồn tại của lớp chủ đề. Nói cách khác, tôi đoán nhóm C++ đã quyết định thêm các hàm vào một không gian tên riêng biệt để làm rõ hơn rằng các hàm này đang đọc hoặc thao tác chuỗi hiện tại, cái gì đó không được rõ ràng như nhau. thành viên của lớp chuỗi.
Nguồn
2015-11-22 10:26:34
Nếu chỉ có tài liệu cho những nơi này ... – juanchopanza
Vì vậy, tôi cho rằng bạn đã đọc [tài liệu tham khảo] (http://en.cppreference.com/w/cpp/thread), bạn sẽ thấy nó cơ bản khác với chức năng của 'std :: thread'. Bạn có thể cụ thể hơn không, những gì thực sự không rõ ràng cho bạn. –