Không có kinh nghiệm với luồng trong quá khứ, mà kỹ thuật luồng trong C++ sẽ là dễ nhất cho người mới bắt đầu? boost :: thread hoặc pthreads?PThread vs boost :: thread?
Trả lời
Đi để tăng :: thread. Đó là closely related cho tác phẩm sắp tới C++ standard threads và giao diện khá dễ sử dụng và thành ngữ đối với C++ (RAII thay vì quản lý tài nguyên thủ công).
boost :: thread là một trừu tượng rất đẹp và di động. Tôi chắc chắn sẽ sử dụng nó, nhưng cũng tìm hiểu api thread gốc, như pthreads, để bạn biết cách hoạt động của luồng trên nền tảng của mình.
Tôi muốn nói rằng chúng khá gần bằng nhau trong khó khăn. Sự khác biệt lớn duy nhất tôi thấy là PThreads được hỗ trợ khá rộng rãi (nếu bạn quan tâm đến việc chuyển đổi nền tảng chéo). Một điều khác nữa là đã có khá nhiều cuốn sách hay về PThread, mặc dù hầu như tất cả các khái niệm sẽ dịch để tăng :: thread và nhiều thư viện luồng khác.
pthreads chỉ có sẵn trên nền tảng * nix theo mặc định (có sẵn trình bao bọc pthreads) cho Windows trên Sourceforge). Boost là đa nền tảng và được hỗ trợ trên cả * nix và Windows. – jalf
Microsoft cung cấp tiêu đề và thư viện pthread với Dịch vụ cho gói Unix. Đối với Win2K/XP/2003, tải xuống: http://www.microsoft.com/downloads/details.aspx?FamilyID=896C9688-601B-44F1-81A4-02878FF11778 Đối với Vista/7/2008, tính năng: http://technet.microsoft.com/en-us/library/cc771672.aspx –
Boost.Thread sử dụng khái niệm RAII để khóa, điều này làm cho mọi thứ ngoại lệ hơn và giúp tránh các lỗi như quên phát hành mutex.
Tôi sẽ đi theo hướng ngược lại của mọi người khác - tìm hiểu (hoặc ít nhất là tự làm quen với những gì có sẵn trong) pthreads.
Kể từ khi tăng chủ yếu chỉ là một wrapper xung quanh pthreads (trên nền tảng posix) nó giúp để biết những gì đang xảy ra bên dưới. Trong cố gắng để được chung chung, thúc đẩy lá nền tảng chức năng cụ thể unwrapped. Để có được nó, bạn cần sử dụng các cuộc gọi native_handle(). Để sử dụng các cuộc gọi native_handle(), bạn cần biết nền tảng cung cấp những gì.
Hãy nghĩ nó giống như ổ cắm. Có hàng tá các lớp socket và khung công tác. Nhưng cuối cùng họ bọc API socket của nền tảng cơ bản. Sự hiểu biết của bạn luôn phong phú hơn bằng cách biết điều đó - và biết được những cách thức trừu tượng hóa lớp học của bạn có thể có những sự tụ họp ngắn.
Chức năng cụ thể nào bạn không thể truy cập thông qua Boost? – jalf
@jalf pthread attributes - priority, etc. Bạn có thể nhận được chúng thông qua các lời gọi Thread_handle(), Mutex, vv, nhưng nếu bạn không biết một chút về pthreads bạn có thể không bao giờ biết chúng ở đó để bắt đầu với . – Duck
Điểm công bằng. Chỉ muốn bạn đã đề cập đến họ trong bài đăng. :) Tôi cũng muốn nói rằng hầu hết các ứng dụng không cần phải lo lắng về ưu tiên luồng (hoặc ưu tiên quy trình, cho vấn đề đó). Nhưng bạn nói đúng, nếu và khi các chi tiết này là cần thiết, sự quen thuộc với API cơ bản là rất cần thiết. – jalf
- 1. Intel TBB vs Boost
- 2. Boost :: thread sleep() làm gì?
- 3. Thread Pool vs Thread Spawning
- 4. Boost :: thread làm gì nếu nó không tạo được thread?
- 5. boost :: tokenizer vs boost :: split
- 6. tr1 :: hash for boost :: thread :: id?
- 7. Handler vs Thread
- 8. ACE vs Boost vs Poco vs wxWidgets
- 9. boost :: lock_guard vs boost :: mutex :: scoped_lock
- 10. Điểm khác biệt nổi bật trong thư viện Boost Thread hoặc Pthreads là gì?
- 11. D language - Thread vs spawn
- 12. boost scoped_lock vs plain lock/mở khóa
- 13. thư viện java.util.concurrent vs. Boost Threads
- 14. pthread (lỗi phân đoạn)
- 15. boost :: thread - Ví dụ đơn giản không hoạt động (C++)
- 16. Là std :: vector hoặc boost :: vector thread safe?
- 17. Boost chủ đề lỗi: undefined tham khảo
- 18. .Net Thread vs ThreadPool vs Task cho SerialPort Communication
- 19. scala actors vs thread và chặn IO
- 20. C++ 0x std :: shared_ptr vs. boost :: shared_ptr
- 21. pthread vs TBB intel và mối quan hệ của chúng với OpenMP?
- 22. Các đại biểu không đồng bộ Vs Thread/ThreadPool?
- 23. Chủ đề trong C, C++, C++ 0x, pthread và thúc đẩy
- 24. Đơn giản pthread! C++
- 25. stl container với std :: unique_ptr's vs boost :: ptr_container
- 26. Sử dụng boost :: asio thread pool cho các mục đích chung
- 27. C++ boost :: thread, cách bắt đầu một chuỗi bên trong một lớp
- 28. Có "Bộ mô tả tập tin sai" khi sử dụng tăng :: asio và boost :: thread
- 29. giải pháp thông minh để lưu trữ dữ liệu để xml thread-safe với Boost
- 30. Pthread có thể tự dọn dẹp không?
Tôi chưa sử dụng, nhưng tôi đã xem tài liệu cho cả hai. Boost là tương thích hơn, nhưng pthread là dễ dàng hơn nhiều để bắt đầu sử dụng. –
Hữu ích: http://www.boost.org/doc/libs/1_54_0/doc/html/boost_asio/overview/networking/bsd_sockets.html –