תכנות מרובה-נימים ב- ++C

servside

New member
תכנות מרובה-נימים ב- ++C

נגיד שאני רוצה ללמוד תכנות מרובה-נימים, ולעשות את זה ב- ++C.

האם כדאי להשתמש ב- POSIX Threads (כלומר להשתמש ישירות בספרייה pthread) או להשתמש בפיצ'רים של השפה עצמה (למשל המחלקה std::thread של C++11)?

(אשמח גם ליתרונות\חסרונות של כל שימוש ולמה הוא כדאי)

תודה
 

vinney

Well-known member
std::thread זה דבר יחסית חדש

יש המון המון קוד קיים שנכתב לפני C++11 (וממשיך להכתב במקומות שלא אימצו את התקן החדש או מוסיפים לקוד קיים), כך שלא יזיק להכיר את הpthreads.
&nbsp
מה שכן הוא, שמנסיון שלי ברוב המקומות מייצרים אבסטרקציה משלהם ולכן נדיר שתכתוב ישירות עם pthread. בד"כ תכתוב מעל איזו שכבה שכבר מומשה בתור מחלקת תשתית במקום בו אתה נמצא.
&nbsp
בגדול כל האבסטרקציות האלה דומות ומממשות מן הסתם את אותם העקרונות שstd::thread מממשת, מה שמשתנה זה בעיקר הסמנטיקה. חשוב להכיר את המושגים של join, promise, future, mutex, signal וכד' - וכשאתה מכיר את אלה, הסינטקס עצמו זה עניין של דקות-ימים ללמוד.
 

יבגניי34

New member
pthread רק אם בא לך ללמוד פרטי מימוש

ספציפיים, קוד לא פורטבילי וידע עם אפס טרנספרביליות. ללמוד את העקרונות boost (לא מכיר את c++11).
pthread is likely wrong level of abstraction
 

דייהטסו

New member
מכל הבחינות עדיף להשתמש בstl

פורטבילי, מתוכנן היטב, שפע של תיעוד. הסיבה היחידה להשתמש בposix היא אם אתה עובד עם קומפיילר שלא תומך בc++11
 

ipv6

Member
std::thread זאת מחלקה

C++ -ית,שעדיף לעבוד איתה אם רוצים לנצל את הפיצ'רים של C++, מן הסתם היא זמינה רק ב-קומפיילרים "חדשים" של C++, להבדיל מ-pthread שהיא ספריה C-ית - לדעתי זה ההבדל \ היתרון המרכזי.

כמו שכתבו פה, יש המון קוד שעושה שימוש ב-pthread ישירות למרות הקיום של std::thread / boost::thread וכנראה שהיא תמשיך לחיות עוד זמן רב ועשויה להיות רלוונטית להמשך הקריירה.

אם המטרה שלך היא ללמוד multi threading (ולא C++) זה לא נורא משנה במה תבחר..
 

bismark1

New member
הספריה הסטנדרטית

מציעה ממשק נקי ופורטבילי, התורם העיקרי לסטנדרט היה המפתח הראשי של boost thread והן מאוד דומות שזה עוד ייתרון. אם אתה בעניין של ספרים אני ממליץ על c++ concurency in action.
אחרי שתשלוט בעקרונות תוכל להסתגל מהר לכל ספרייה, כולל pthread.
 
מצטרף להמלצה על הספר

הוא ספר מעולה ומציג היטב גם את העקרונות של multi-threaded programming וגם איך עושים את זה בספ"פ מודרנית.
 

servside

New member
תודה לעונים והעוזרים


 
למעלה