Boost.Thread C++: पूर्ण गाइड उदाहरणों के साथ
1. यह क्या है और क्यों ज़रूरी है
Boost.Thread, Boost C++ Libraries का एक शक्तिशाली और परिपक्व पुस्तकालय है, जो मल्टीथ्रेडिंग के लिए पोर्टेबल (क्रॉस-प्लेटफ़ॉर्म) सुविधाएँ प्रदान करता है। यह C++11 मानक द्वारा <thread> मॉड्यूल शुरू करने से बहुत पहले आया था, और आज भी अपनी लचीलापन, समृद्ध टूलसेट और पुराने कंपाइलरों के समर्थन के कारण लोकप्रिय है। यह लाइब्रेरी थ्रेड बनाने और प्रबंधित करने, साझा डेटा तक पहुँच को सिंक्रोनाइज़ करने, लॉक, कंडीशनल वेरिएबल, बैरियर, सेमाफोर, थ्रेड पूल और बहुत कुछ करने की सुविधा देती है।
अगर स्टैंडर्ड लाइब्रेरी मौजूद है तो Boost.Thread की आवश्यकता क्यों? पहला, Boost.Thread अतिरिक्त प्रिमिटिव प्रदान करता है जो C++ मानक में नहीं हैं (जैसे barrier, when_any के साथ future, thread_group)। दूसरा, इसका थ्रेड प्रबंधन के लिए अधिक समृद्ध API है (जैसे थ्रेड स्टैक, प्राथमिकता, नाम सेट करना)। तीसरा, Boost.Thread विभिन्न प्लेटफ़ॉर्म (Windows, Linux, macOS) और कंपाइलरों (MSVC, GCC, Clang) के बीच कोड की पोर्टेबिलिटी सुनिश्चित करता है, जो बड़े प्रोजेक्ट्स के लिए महत्वपूर्ण है। अंत में, Boost.Thread का उपयोग लीगेसी प्रोजेक्ट्स में सक्रिय रूप से किया जाता है, जहाँ C++11/17/20 में माइग्रेशन मुश्किल है।
PythonLib शैक्षिक साइट पर, हम Boost.Thread को C++ में मल्टीथ्रेडिंग के लिए एक "इंडस्ट्रियल" लाइब्रेरी के बेहतरीन उदाहरण के रूप में देखते हैं। यह साझा संसाधनों के सही उपयोग, deadlock और race conditions से बचने, और मल्टीथ्रेडेड एप्लिकेशन के डिज़ाइन पैटर्न सिखाता है।
2. इंस्टॉलेशन
Boost.Thread pip, npm या cargo के माध्यम से इंस्टॉल नहीं होता - यह C++ के लिए एक लाइब्रेरी है जो Boost के साथ इंस्टॉल होती है। नीचे विभिन्न सिस्टम के लिए सटीक कमांड दिए गए हैं।
Linux (Ubuntu/Debian)
sudo apt-get update
sudo apt-get install libboost-all-dev
macOS (Homebrew)
brew install boost
Windows (vcpkg)
vcpkg install boost-thread
Windows (मैन्युअल बिल्ड)
आधिकारिक साइट से Boost डाउनलोड करें, अनज़िप करें और निम्नलिखित चलाएँ:
bootstrap.bat
.\b2 --with-thread
CMake के साथ बिल्ड (उदाहरण)
आपके CMakeLists.txt में:
find_package(Boost REQUIRED COMPONENTS thread)
target_link_libraries(your_target PRIVATE Boost::thread)
3. त्वरित शुरुआत — न्यूनतम कार्यशील उदाहरण
main.cpp फ़ाइल बनाएँ:
#include <iostream>
#include <boost/thread.hpp>
void hello() {
std::cout << "थ्रेड से नमस्ते! थ्रेड ID: "
<< boost::this_thread::get_id() << std::endl;
}
int main() {
boost::thread t(hello);
t.join(); // थ्रेड के खत्म होने की प्रतीक्षा करें
std::cout << "मुख्य थ्रेड समाप्त।" << std::endl;
return 0;
}
कंपाइल करें और चलाएँ:
g++ main.cpp -lboost_thread -lboost_chrono -pthread -o main
./main
आउटपुट (थ्रेड ID अलग होगा):
थ्रेड से नमस्ते! थ्रेड ID: 0x7f8b9c0b9700
मुख्य थ्रेड समाप्त।
4. मुख्य तरीके/फ़ंक्शन/क्लास
4.1. boost::thread — थ्रेड बनाना और प्रबंधित करना
सिग्नेचर:
explicit thread(const boost::function0<void>& thread_function);
void join();
void detach();
bool joinable() const;
यह क्या करता है: boost::thread क्लास एक अलग निष्पादन थ्रेड का प्रतिनिधित्व करता है। कंस्ट्रक्टर एक कॉल करने योग्य ऑब्जेक्ट लेता है