ABA


"חישוב מספר במספר Thread, האם יש דרך מהירה יותר? |JAVA|"
גירסת הדפסה        
קבוצות דיון פיתוח, תיכנות ובניית אתרים נושא #20076 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 20076
asco88 
חבר מתאריך 17.6.04
26757 הודעות
   14:42   20.06.13   
אל הפורום  
  חישוב מספר במספר Thread, האם יש דרך מהירה יותר? |JAVA|  
 
הייתי צריך לבדוק האם מספר ראשוני, באמצעות שני Threads מקבילים, כשאחד בודק מספרים מ3 + 4 עד שורש N והשני מ5. (בלי הזוגיים כמובן).
כשהפעלתי את שניהם, הראשון סיים לפעול עוד לפני שהשני התחיל, אז נתתי לכל אחד sleep(1) לפני כל סיבוב, ואז הם פעלו במקביל, הבעיה שכשניסיתי לתת ערך ממש ארוך, הוא פשוט חישב איזה 2 דקות.
יש דרך יותר נכונה ליצור אולי הפרש, בלי להוסיף 1MS כל פעם?

או שאולי יש עוד פתרון.
תודה.


                                שתף        
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

  האשכול     מחבר     תאריך כתיבה     מספר  
  לא בדיוק הבנתי מה אתה מנסה לעשות... CaTz 20.06.13 22:37 1
     אני פשוט לא מעוניין שאחד יעבוד ורק אז השני יתחיל, אבל הבנתי עכשיו שזאת לא בעיה asco88  23.06.13 16:29 4
         סתם שתדע, אם אתה מריץ 2 threads ואין לך מעבד כפול ליבה לפחות (או תמיכה של הJVM איציק2 23.06.13 23:14 7
             ברור, אם זה לא היה ללימודים, לא הייתי מדמיין לממש את זה ככה asco88  24.06.13 01:10 10
  כנס איציק2 22.06.13 01:59 2
     תגובה 4, תודה רבה asco88  23.06.13 16:29 5
  אני חושב שיש איזשהי בעיה באלגוריתם... ShocKi  23.06.13 15:51 3
     כן זה בדיוק מה שקורה, במקום ששניהם ירוצו על כל המספרים, כל אחד עובר על ''סט'' asco88  23.06.13 16:30 6
         לא הבנתי למה אתה צריך את ה sleep. ShocKi  23.06.13 23:19 8
             כן, הבנתי את זה באיזה שלב :) תודה asco88  24.06.13 01:10 9

       
CaTz
חבר מתאריך 2.10.04
14537 הודעות
   22:37   20.06.13   
אל הפורום  
  1. לא בדיוק הבנתי מה אתה מנסה לעשות...  
בתגובה להודעה מספר 0
 
   2 threadים שאחד גדל במספר והשני גדל במספר אחר...
ואז לבדוק את השיתוף בין המידע שלהם?

יש משהו שנקרע semaphore, שמה שהוא בעצם עושה, זה חוסם thread
עד שהשני לא מבצע את הפעולה שאתה מצפה לו,
כלומר בשילוב של שניים כאלו, כאשר אחד נחסם ע"י הshemaphre של השני
והשני ע"י הראשון...(כאשר אחד מסיים את הפעולה הוא משחרר את הראשון לריצה וההיפך...)

אולי זה יעזור לך, זה בעקרון חומר תיאורתי למימוש
www.cs.bgu.ac.il/~os132/wiki.files/Synchronization-part2.ppt

אבל אתה מוזמן לחפש מידע במקורות המקובלים :]


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
asco88 
חבר מתאריך 17.6.04
26757 הודעות
   16:29   23.06.13   
אל הפורום  
  4. אני פשוט לא מעוניין שאחד יעבוד ורק אז השני יתחיל, אבל הבנתי עכשיו שזאת לא בעיה  
בתגובה להודעה מספר 1
 
שלי שהמחשב מהיר מידי, ולמעשה הם פועלים במקביל.
חוץ מזה, מצגת מעניינת, אני אעבור עליה בהמשך, תודה


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
איציק2
חבר מתאריך 26.4.08
2436 הודעות
   23:14   23.06.13   
אל הפורום  
  7. סתם שתדע, אם אתה מריץ 2 threads ואין לך מעבד כפול ליבה לפחות (או תמיכה של הJVM  
בתגובה להודעה מספר 4
 
   במעבד כפול ליבה) ואתה מבצע רק את הפעולות חישוב ולא מחכה לאיזה i/o תוך כדי מהמשתמש או מהמערכת, אז הזמן שייקח לך להריץ ב2 threads יהיה נמוך מהזמן שייקח לך להריץ את אותה תכנית בthread אחד...


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
asco88 
חבר מתאריך 17.6.04
26757 הודעות
   01:10   24.06.13   
אל הפורום  
  10. ברור, אם זה לא היה ללימודים, לא הייתי מדמיין לממש את זה ככה  
בתגובה להודעה מספר 7
 


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
איציק2
חבר מתאריך 26.4.08
2436 הודעות
   01:59   22.06.13   
אל הפורום  
  2. כנס  
בתגובה להודעה מספר 0
 
   אם הבנתי אותך נכון, אתה רוצה להריץ 2 ת'רדים וששניהם יסיימו ורק אז להמשיך את התוכנית.
אז אם אתה רוצה לחכות עד ששני הת'רדים יסיימו לפני שתמשיך את התהליך, בלי סליפים זמניים תשתמש פשוט במטודה join דרך האובייקט של הthread שעשית עליו start...
ככה הmain (שזה בעצם הthread השלישי והראשי בתוכנית שלך) הולך "לישון" עד שזה שעשית עליו join יסיים. ואז יחזור להמשיך את הריצה.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
asco88 
חבר מתאריך 17.6.04
26757 הודעות
   16:29   23.06.13   
אל הפורום  
  5. תגובה 4, תודה רבה  
בתגובה להודעה מספר 2
 


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ShocKi  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 19.3.02
20171 הודעות, 10 פידבק
   15:51   23.06.13   
אל הפורום  
  3. אני חושב שיש איזשהי בעיה באלגוריתם...  
בתגובה להודעה מספר 0
 
   הרי כל הרעיון זה שכל thread יעדכן את המשאב המשותף בהתאם למה שהוא מצא ובכך יחסוך איטרציות עבור ה thread האחר...
אחרת, מה הרעיון בלהשתמש ב threads?


קאש-באק ישראלי: https://www.cashback.co.il/?uref=33330
קאשבק לAsos ואמזון דרך Ebates: https://goo.gl/MX87Y7 - מקבלים 10$ לאחר שימוש ראשון.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
asco88 
חבר מתאריך 17.6.04
26757 הודעות
   16:30   23.06.13   
אל הפורום  
  6. כן זה בדיוק מה שקורה, במקום ששניהם ירוצו על כל המספרים, כל אחד עובר על ''סט''  
בתגובה להודעה מספר 3
 
אחר של מספרים, כדי שבכל רגע נתון לכאורה ייבדקו 2 מספרים ולא רק אחד


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ShocKi  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 19.3.02
20171 הודעות, 10 פידבק
   23:19   23.06.13   
אל הפורום  
  8. לא הבנתי למה אתה צריך את ה sleep.  
בתגובה להודעה מספר 6
 
   למה אתה חושב שזו טעות ש thread ראשון סיים לפני שהשני התחיל?
זו תוצאה מאוד מתקבלת על הדעת כאשר אתה נותן מספר קטן. ההתערבות המלאכותית שאתה מנסה ליצור לא תורמת למקבילות ולא מדגימה אותה.

תתן קלט מספיק גדול ואז תבדוק אם יש מקבילות.


קאש-באק ישראלי: https://www.cashback.co.il/?uref=33330
קאשבק לAsos ואמזון דרך Ebates: https://goo.gl/MX87Y7 - מקבלים 10$ לאחר שימוש ראשון.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
asco88 
חבר מתאריך 17.6.04
26757 הודעות
   01:10   24.06.13   
אל הפורום  
  9. כן, הבנתי את זה באיזה שלב :) תודה  
בתגובה להודעה מספר 8
 


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

תגובה מהירה  למכתב מספר: 
 
___________________________________________________________________

___________________________________________________________________
למנהלים:  נעל | תייק בארכיון | מחק | העבר לפורום אחר | מחק תגובות | עגן אשכול
       



© כל הזכויות שמורות ל-רוטר.נט בע"מ rotter.net