2010-08-04 31 views
6

Tôi muốn tìm hiểu cách xây dựng ứng dụng đa luồng, nhưng tôi thậm chí không biết bắt đầu từ đâu.Cơ bản đa luồng trong C/C++ - gợi ý, lời khuyên, hướng dẫn, một số hướng?

Hầu hết mọi người triển khai đa luồng như thế nào? Họ có sử dụng thư viện tăng không? Có cách nào khác để làm điều đó không? (sử dụng tiêu chuẩn C/C++)

Tôi hiểu khái niệm, nhưng hoàn toàn không biết bắt đầu từ đâu để thực sự tìm hiểu cách thực hiện. Bất cứ ai có thể giới thiệu bất cứ điều gì?

http://msdn.microsoft.com/en-us/library/7t9ha0zh%28v=VS.80%29.aspx < --- Các chuẩn C++ này hoặc một số triển khai chỉ dành cho Microsoft?

Tôi có đúng là các thư viện đa luồng được chứa trong API Windows không? Tôi tìm thấy một ví dụ về MSDN ( http://msdn.microsoft.com/en-us/library/esszf9hw%28v=VS.80%29.aspx) và các chức năng mà nó sử dụng (ReleaseMutex, v.v.) dường như nằm trong windows.h. Đây có phải là điều mà hầu hết mọi người đang sử dụng khi họ lập trình Windows không?

+0

không có chuỗi C/C++ chuẩn nào. thúc đẩy chủ đề là điều tốt nhất tiếp theo http://stackoverflow.com/questions/415994/boost-thread-tutorials. C++ 0x không có chủ đề nếu bạn muốn đi tuyến đường đó. – Anycorn

+0

Tôi đã làm một số đọc vào ngày khác, và nó xuất hiện của Microsoft Managed C++ đã thực hiện một số sai lệch nghiêm trọng từ tiêu chuẩn C++ có thể lừa bạn lên. Hãy cẩn thận rằng tài liệu MSDN không nói về Managed C++ và không đúng tiêu chuẩn hóa C++. –

+0

Hãy thoải mái xem xét dự án Tetris của tôi sử dụng đa luồng quá mức (chủ yếu vì lợi ích của tự học): http://code.google.com/p/tetris-challenge/. – StackedCrooked

Trả lời

3

Thư viện tăng cường là cách sử dụng chủ đề đa nền tảng.

Hầu hết mọi người sử dụng winapi hoặc pthreads. pthreads ban đầu được sử dụng trên các hệ thống POSIX nhưng có một cổng của nó cho mingw cho phép sử dụng trên các cửa sổ quá.

Tôi khuyên bạn nên sử dụng tăng cường nếu bạn hoàn toàn cần giải pháp đa nền tảng hoặc đã có các thư viện tăng liên kết. Nếu bạn đang phát triển cho windows hoặc POSIX, sử dụng winapi hoặc pthreads tương ứng.

+0

Chỉ cần sử dụng boost - Boost.Thread và Boost.Bind là hai người bạn yêu thích của tôi trong tuần này. –

+0

Tôi đã sử dụng [winpthreads] (http://sourceware.org/pthreads-win32/) với MSVC. – sje397

2

Nếu bạn đang tìm kiếm một hiệu suất đơn giản cho ứng dụng của bạn thông qua đa luồng OpenMP là một thư viện đơn giản cho phép chương trình của bạn mở rộng trên nhiều lõi, chỉ yêu cầu vị trí #pragma trong mã của bạn để song song các khối mã hoặc vòng lặp, với các tùy chọn bổ sung cho hiệu suất cụ thể yếu. Điều này không dễ dàng cho phép tính song song thô như một bộ phận GUI/xử lý/IO trong ứng dụng, nhưng cho phép hiệu suất đa luồng dễ nhìn thấy được tăng lên trên các máy đa lõi với số lượng lớn crunching.

Các vấn đề liên quan