ווטסאפ - לינוקס, BSD, קוד פתוח ותוכנה חופשית בעברית. Whatsup - Linux, BSD, open source and free software in Hebrew

 
 
  כניסת חברים · רישום · שכחתי סיסמה  
tux the penguin
תגובה לנושא
צפיה בנושא הבא Printable version התחבר כדי לבדוק הודעות פרטיות צפיה בנושא הקודם
txhאורח · ·
 

הודעה פורסם: 22/01/2020 - 01:24
נושא ההודעה: אסינכרוני javascript, האם חסין מ race condition?

קוד:

var z = {val: 0}

var ary=[]
for (let i=0;i<3;i++){
    console.log( `i is ${i}`,i)
    th= new Promise((z)=>{
        for (i=0;i<50000;i++){
            z.val++;
        }
    })

    ary.push(th);
}


אני לומד בשביל הכיף תכנות אסינכרוני ב cpp והחלטתי לבדוק אם javascript חסין
מ race condition ברמת הזיכרון....

לפי מה שאני רואה היא שהוא לא,
אני מקבל 50000 בערך של z והוא לא מוכן לרוץ את שאר הפעמים
וגם סמתי כל enclosure אפשרי...
גם השתמשתי ב let ולא ב- var



1. האם אני צודק?
2. האם אני מבצע את הבדיקה נכון?
3. האם גיליתי באג בכרום?
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
אורח · ·
 

הודעה פורסם: 22/01/2020 - 01:28
נושא ההודעה: Re: אסינכרוני javascript, האם חסין מ race condition?

בעצם הוא כן חסין, ביצעתי את הבדיקה לא נכון
אפשר להתעלם.....
מצורף הבדיקה הנכונה...
קוד:

function g(z){
    for (i=0;i<50000;i++){
        z.val++;
    }
}

var z = {val: 0}


var ary=[]
for (let i=0;i<3;i++){
    console.log( `i is ${i}`,i)
    th= new Promise(()=>{g(z)})

    ary.push(th);
}
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
אורח · ·
 

הודעה פורסם: 22/01/2020 - 01:46
נושא ההודעה:

בעצם זאת לא בדיקה נכונה, כ promise רץ תמיד על thread אחד
והם ״מוגנים״ כי הם רצים אחד אחרי השני...

בדיקה אמיתי אפשר לעשות עם web worker אבל גם אותו לא ניתן לישבור כי פרמטרים ל webworkers תמיד מועתקים ולא מועברים ברפרנס..
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
בטיטואורח · ·
 

הודעה פורסם: 22/01/2020 - 07:49
נושא ההודעה:

ממה שקראתי פעם js היא non blocking single threaded
או שזה היה node?
זה קשור בכלל לנושא? אז למה אני מתערב ?
תתעלם
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
אורח · ·
 

הודעה פורסם: 22/01/2020 - 13:49
נושא ההודעה:

הדרך לבדוק את זה היא ליצור מספר טרדים במקביל עם web workers

ולנסות להציג ולהדפיס ערכים של משתנה גלובלי כלשהו.
הסיבה לכך היא שכרגע אתה סיריאלי.
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
אורח · ·
 

הודעה פורסם: 22/01/2020 - 20:32
נושא ההודעה:

אבל אם אני בהכרח מעתיק את הערכים ולא פונה ב ref אז אין סיבה שאגיע ל race condition
המערך שמוכנס ל web worker הוא כמו להגיד
JSON.serielize(what ever)


Anonymous :
הדרך לבדוק את זה היא ליצור מספר טרדים במקביל עם web workers

ולנסות להציג ולהדפיס ערכים של משתנה גלובלי כלשהו.
הסיבה לכך היא שכרגע אתה סיריאלי.
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
אורח · ·
 

הודעה פורסם: 22/01/2020 - 20:33
נושא ההודעה:

בטיטו :
ממה שקראתי פעם js היא non blocking single threaded
או שזה היה node?
זה קשור בכלל לנושא? אז למה אני מתערב ?
תתעלם


זה בידיוק זה הנושא למעשה זה רץ סרייאלי, אני חושב שבאמת אין דרך לשבור את ה javascript ב- race condition
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
הצגת הודעות מלפני:     
מעבר אל:  
כל הזמנים הם GMT + 2 שעות
תגובה לנושא
צפיה בנושא הבא Printable version התחבר כדי לבדוק הודעות פרטיות צפיה בנושא הקודם
PNphpBB2 © 2003-2004 

תוכן הדיון

  1. אורח [txh]
  2. אורח
  3. אורח
  4. אורח [בטיטו]
  5. אורח
  6. אורח
  7. אורח