פורסם 2006 באוקטובר 2319 שנים האם מישהו פה מכיר מדריך/מאמר/חוברת טובה באינטרנט ללימוד של הנושא הנ"ל? אני צריך משהו דיי מעמיק, גם כי אני לא מתמצא בנושא יותר מידי, וגם כי אני רוצה לדעת אותו כמו שצריך. חיפוש בגוגל/msdn הניב כל מיני מדריכונים שהם ספציפים מידי / קצרים מידי / תאורטים מידי, וכו'. אני צריך משהו שעובר על הנושא משלב התאוריה עד לשלב כתיבת התוכנית. ובwin32, לא unix. תודה... עריכה: טוב אולי במקום לשאול את השאלה הזאת, אני אציג פשוט את הבעיה. בניתי שרת לתוכנת צ'אט, שיכולים להתחבר אליו כמה אנשים. עכשיו אני רוצה לבנות לקוח לתוכנה הזאת, עדיף בC++ סביבת windows. הבעיה העיקרית היא שאני צריך בו זמנית גם "להקשיב" לפורט שמחובר אל השרת, בשביל לדעת האם התקבלה ממנו הודעה חדשה, וגם לבדוק אם המשתמש כתב משהו, כדי שאני אוכל לשלוח את ההודעה שהוא כתב אל השרת. אפשרות ראשונה: להתייחס לstdin בתור socket כשאני עושה select, ואז לדעת שהמשתמש כתב הודעה. (ירד מהפרק כי זה עובד רק בunix, כי "every thing is a file". אפשרות שניה: כן להתקע בselect כשאני מקשיב לשרת, ולעשות איזה משהו שיתן לי פסיקה ברגע שההודעה מהמשתמש מוכנה. (נשמע כמו דרך מעפנה לתכנת, אבל אולי זה הפתרון. יש למישהו הצעות איך עושים את זה?) אפשרות שלישית: לעשות timeout אפסי לselect, ואז לבדוק את מצב הstdin, ושוב לחזור לselect. (התעללות במעבד, בטוח שזאת לא הדרך הנכונה לעשות את זה). אפשרות רביעית: להשתמש ב thread שעושה את זה, וthread אחר שעושה את זה. (multithreading, מישהו?) הערה לסיום: בגדול אני רוצה לכתוב את זה עכשיו בC++, ואחרי שאני אסיים לשדרג את זה לVC++, אותו אני עוד צריך ללמוד. בC++ רגיל זה בכלל בעיה, בגלל אם למשל הייתי באמצע לכתוב הודעה, ואז אני מקבל הודעה מהשרת, היא עולה על מה שאני כותב, ומשאירה אותי עם שורה חדשה לסיים בה חצי משפט, כאשר את החצי הקודם אני כבר לא יכול לערוך (אני מקווה שאני מסביר את זה בצורה ברורה). בVC++ כמובן זאת לא בעיה, כי אני יכול ליצור אזורים בתוך החלון, למשל text area בו יוצגו ההודעות המתקבלות מהשרת, עוד אחד כזה בו המשתמש מקליד את ההודעה שלו, ועוד אחד בו מוצגת רשימת הלקוחות המחוברים לשרת. אם מישהו יכול לתת לי טיפים גם בנושא הזה, זה יעזור. תודה. (וכן, אני יודע שאני שואל הרבה )
פורסם 2006 באוקטובר 2419 שנים multi-tasking זה מושג שיווקי, לא טכני.ברמת מערכת ההפעלה יש לך multi-processing (הרצת כמה תוכניות במקביל) שההיבט של זה בתכנות זה תקשורת בין processes שונים דרך קבצים, named pipes, ו- mutex-ים.ברמת ה- process יש לך multithreading ששם כבר יש לך דברים יותר מעניינים, כי ל- threads יש זיכרון משותף.בעיקרון הנושאים שקשורים ל- multithreading הם סנכרון/תזמון, thread safety, ומניעת deadlocks.לא שאני רוצה לייאש אותך, אבל זה בערך שני-שליש מהתוכן של קורס מערכות הפעלה במדעי המחשב.
פורסם 2006 באוקטובר 2419 שנים מחבר לא משנה לי גם אם זה ספר של 800 עמודים. רק שמישהו יגיד לי מה השם שלו.ואני מודע להבדל הזה בין multi prossessing ל multi tasking...
פורסם 2006 באוקטובר 2419 שנים ב- C++ כשלעצמו אין בכלל threads. למעשה גם sockets אין לך ב- C++ "נקי".ב- MFC זה יותר קל וב- Java או C# זה עוד יותר קל.ב- MFC אתה בכלל לא צריך threads, כי הכל יכול להיות תגובה ל- events.
פורסם 2006 באוקטובר 2419 שנים http://www.programmerworld.net/books/c%2B%2B.htmאני מקווה שיש שם ספר שיעזור לך (לא היה כח לבדוק יש איזה 40 ספרים)אתה יכול להוריד איזה ספר שתירצה רק תשים לב לשני דברים רוב הספרים מאוכסנים על אתרשמאפשר הורדה מוגבלת ככה שהוא יתן לך להוריד רק קובץ 1 ביום אלא אם כן תירשם (וזה כבר עולה כסף)אז תיקרא טוב על מה כל ספר לפני שאתה מוריד בנוסף לקבצים יש סיסמה שרשומה בסוף כל תקציראתה יכול לחפש גם באימיול ,שם תימצא המון ספרים,אני באופן אישי ההיתי מחפש ספרים של WROXהם מעולים
פורסם 2006 באוקטובר 2519 שנים אם אתה רוצה לעבוד ב-C או C++ "טהור" תצטרך למצוא ספריה שהיא cross platform שיש לה threading או processes.דוגמה לספריה כזו ב-C++ היא boost אשר יש לה רכיב של threads.הייתי מפנה אותך ל-Beej's Guide to Sockets (חפש בגוגל). הוא ל-UNIX, אבל אני חושב שהעקרונות לא מאוד שונים והיתרון שלו הוא שהוא קצר ופשוט.זה אולי יעזור (ואולי לא):http://webcourse.cs.technion.ac.il/234120/Spring2006/en/ho.html
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.