פורסם 2012 בנובמבר 2013 שנים שלום לכולם רציתי לדעת מה זה Thread Safety או Thread Safe כי נתקלתי במושג הזה ולא כל כך הבנתי מה הוא אומר. אשמח אם אוכל לקבל הגדרה של המושג שאוכל להבין יותר טוב. תודה
פורסם 2012 בנובמבר 2013 שנים מחבר ברור באותו התהליך (Process) יכולים לרוץ כמה תהליכונים (או נימים או חוטים איך שלא תקרא לזה) במקביל. זה עוזר לספק למשתמש אפשרות לעשות כמה דברים במקביל וכמו כן זמן ריצה חלק יותר.
פורסם 2012 בנובמבר 2013 שנים סבבה. אז נניח שכמה נימים מנסים לגשת למשאב משותף (לדוגמה זכרון) בו זמנית. מה יקרה?לדוגמה, נניח שיש איזשהו משתנה בשם x, ושני נימים מנסים להוסיף לו 1. איך זה עובד? כל נים צריך לקרוא את המשתנה מהזכרון, להוסיף לו 1, ולכתוב את התוצאה בחזרה לזכרון. אז אם לדוגמה ערכו ההתחלתי הוא 0, ושני נימים מנסים לעשות את הפעולה הזו בדיוק בו זמנית, זה מה שיקרה (זה כמובן פישוט של מה שיקרה באמת, אבל זה רק לצורך ההדגמה):1. נים א' יקרא 0 מ-x שיושב בזכרון.2. נים ב' יקרא 0 מ-x שיושב בזכרון.3. נים א' יוסיף 1 לערך שהוא קרא.3. נים ב' יוסיף 1 לערך שהוא קרא.4. נים א' יכתוב את הערך 1 לתוך x.5. נים ב' יכתוב את הערך 1 לתוך x.אז למרות ש-x היה אמור לגדול ב-2, הוא רק גדל ב-1.השגיאה הזו נקראת Race Condition, וקטע הקוד הזה שמשתמש במשאב משותף (המשתנה x) נקרא "קטע קריטי". קטע קוד (או פונקציה, או מחלקה) קרוי Thread Safe אם שני ת'רדים יכולים להפעיל אותו זו זמנית בלי חשש לשגיאות כאלה. בשביל להפוך קטעי קוד ל-Thread safe צריך להשתמש במנגנוני נעילה, סנכרון ותיאום בין ת'רדים, שבד"כ מובנים בתוך השפה. לדוגמה, בג'אווה אפשר להשתמש במילה השמורה synchronized, שדואגת שאת קטע הקוד או הפונקציה רק ת'רד אחד יוכל להפעיל בכל רגע נתון (אם עוד ת'רד מנסה להפעיל את הפונקציה, אז הוא צריך לחכות עד שהקודם יסיים):http://docs.oracle.com/javase/tutorial/essential/concurrency/syncmeth.html
פורסם 2012 בנובמבר 2013 שנים אם תרשום איזה שפה אתה מכיר הכי טוב אז ניתן יהיה להפנות אותך לדוגמאות קרובות אליך יותר.
פורסם 2012 בנובמבר 2013 שנים מחבר וואי תודה רבה על ההסבר שניצל הבנתי את זה ממש טוב תמשיך בעבודה הטובה ול - yigal_o, הבנתי, אבל כעיקרון השפות שאני מכיר הכי טוב הן Java ו - C#
פורסם 2012 בנובמבר 2013 שנים לשפה אין שום משמעות.אגב, מומלץ לקרוא על כל הנושא של תכנות מקבילי. בעיות של מניעה הדדית (mutual exclusion) חשובות מאוד להכרה ופתרון.
פורסם 2012 בנובמבר 2113 שנים כמובן שאתה צודק, לשפה אין שום משמעות אבל אם יש שפה שאתה כבר שולט בה אני יודע שלי למשל נוח לראות דוגמאות קוד בשפות שאני מכיר.ברור שבשלב ראשון צריך להבין רעיונית אבל מיד אחרי זה אני מנסה לחשוב על איך לממש. לי לפחות זה גם עוזר להבנה.
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.