דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. ניטור כמות הgoroutines הפעילים בפונקציה

ניטור כמות הgoroutines הפעילים בפונקציה

מתוזמן נעוץ נעול הועבר תכנות
17 פוסטים 4 כותבים 234 צפיות 2 עוקבים
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
תגובה
  • תגובה כנושא
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • nigunN nigun

    אחרי הדיבוג המוצלח שהיה כאן
    אני ימשיך לבעיה הבאה
    אני מנסה לבנות שרת HTTP שינטר את כמות הפעולות שיבצעו במקביל.
    למשל אם אני רוצה להוציא צינתוק/הודעה-קולית מאסטריסק
    אני מעתיק קובץ עם הפרטי השיחה לתיקיה מסויימת, ואסטריסק מבצע שיחה
    אבל אני לא יכול לבנות API רגיל שיאזין לכל בקשה ויצור קובץ עם המשתנים הרלוונטים
    כי המערכת מוגבלת לכמות השיחות שניתן לבצע בו זמנית.
    כאן ניסו להציע פתרון של מסדי נתונים סבוכים
    ואני מנסה לראות האם ניתן לבצע משהו יותר חכם עם GO

    ניסתי להשתמש בWaitGroup שפשוט יעצור את הערוץ ל5 שניות אחרי כל פעולה
    ואז אני מגביל את הפוקנציה שלא תפעל יותר מ12 פעמים בדקה (כמובן שאפר לשנות את זה)
    אבל זה נראה שזה לא כל כך פשוט
    זה הקוד שלי

    package main
    
    import (
            "fmt"
            "sync"
            "time"
    
            "github.com/gofiber/fiber"
    )
    
    func main() {
            var wg sync.WaitGroup
            app := fiber.New()
            // Match any route
            app.Get("/:number", func(c *fiber.Ctx) {
                    number := c.Path()
                    str := []byte(number)
                    go myfunc(string(str), &wg)
                    c.Send(number)
            })
            app.Listen(3000)
    }
    func myfunc(number string, wg *sync.WaitGroup) {
            fmt.Printf("number is %s\n", number)
            wg.Wait()
    
            wg.Add(1)
            fmt.Printf("number is now %s \n", number)
    
            time.Sleep(5 * time.Second)
            wg.Done()
    }
    
    
    
    

    אבל כשאני מריץ את זה אני מקבל שגיאה

    number is /1
    number is now /1 
    number is /2
    number is /3
    number is /4
    number is /5
    number is /6
    number is /7
    number is /8
    number is /9
    number is now /9 
    panic: sync: WaitGroup is reused before previous Wait has returned
    
    goroutine 11 [running]:
    sync.(*WaitGroup).Wait(0xc0000275a0)
    	/usr/local/go/src/sync/waitgroup.go:132 +0xad
    main.myfunc(0xc000027748, 0x2, 0xc0000275a0)
    	/root/go/src/httpADtest/main.go:25 +0xbb
    created by main.main.func1
    	/root/go/src/httpADtest/main.go:18 +0xbe
    exit status 2
    
    

    מה שלכאורה קורה זה שכל הgoroutines מחכים ב wg.Wait
    וכשזה משתחרר כולם משתחררים בבת אחת ולא אחד אחרי השני
    האם יש פתרון לזה או שהרעיון שלי לא נכון בכלל?

    dovidD מנותק
    dovidD מנותק
    dovid
    ניהול
    כתב ב נערך לאחרונה על ידי
    #2

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

    @nigun אמר בניטור כמות הgoroutines הפעילים בפונקציה:

    מה שלכאורה קורה זה שכל הgoroutines מחכים ב wg.Wait

    כי זה בדיוק מה שכתבת לגו לעשות. הראשון נכנס בלי בעיה (כי אין גורוטין שמחכים), ומחכה, ואז כל היתר נתקעים בwaite למשך הזמן שהראשון ישן. ברגע שהוא "התעורר" הם כולם מסתערים, אין מי שמונע מהם.
    את השגיאה אני לא מבין.

    • מנטור אישי בתכנות והמסתעף – להתקדם לשלב הבא!
    • בכל נושא אפשר ליצור קשר dovid@tchumim.com
    nigunN תגובה 1 תגובה אחרונה
    1
    • dovidD dovid

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

      @nigun אמר בניטור כמות הgoroutines הפעילים בפונקציה:

      מה שלכאורה קורה זה שכל הgoroutines מחכים ב wg.Wait

      כי זה בדיוק מה שכתבת לגו לעשות. הראשון נכנס בלי בעיה (כי אין גורוטין שמחכים), ומחכה, ואז כל היתר נתקעים בwaite למשך הזמן שהראשון ישן. ברגע שהוא "התעורר" הם כולם מסתערים, אין מי שמונע מהם.
      את השגיאה אני לא מבין.

      nigunN מנותק
      nigunN מנותק
      nigun
      כתב ב נערך לאחרונה על ידי
      #3

      @dovid
      קודם כל מצאתי את הפתרון
      צריך להשתמש ב mutex.Lock() וזה עובד מצויין

      
      package main
      
      import (
              "fmt"
              "sync"
              "time"
      
              "github.com/gofiber/fiber"
      )
      
      var mutex = &sync.Mutex{}
      
      func main() {
              app := fiber.New()
              // Match any route
              app.Get("/:number", func(c *fiber.Ctx) {
                      number := c.Path()
                      str := []byte(number)
                      go myfunc(string(str))
                      c.Send(number)
              })
              app.Listen(3000)
      }
      func myfunc(number string) {
              fmt.Printf("number is %s\n", number)
              mutex.Lock()
      
              fmt.Printf("number is now %s \n", number)
      
              time.Sleep(3 * time.Second)
              mutex.Unlock()
      }
      
      

      לגבי אסטריסק לא ידוע לי על אפשרות לדעת מה הסטטוס של השיחה
      הדרך היחידה ש @שואף מצא היא פשוט להגביל את מספר הבקשות לדקה.

      בכל מקרה מה שאני מנסה לבנות זה לאו דווקא שישחרר את הנעילה אחרי X דקות
      אפשר גם להתנות משהו אחר, למשל תשובה מהAPI המבוקש
      בכל מקרה הדרך הכי קלה לדיבוג זה עם Sleep.

      אגב בדיוק נתקלתי בעוד שימוש לשרת כזה
      אני חשבתי לקנות חבילת TTS של עלמא רידר וכיוון שאני לא צריך את החבילות הגדולות שלהם (מינימום 2100 ש"ח)
      חשבתי לעשות ריסייל ולמכור חבילות קטנות יותר
      הבעיה היא שבמחירון שלהם כתוב שהם מגבילים את הכמות בקשות בו זמנית לכל חשבון (2 בקשות בחבילה הבסיסית)
      והשרת הקטן שאני מנסה לבנות אמור לפתור את הבעיה
      (את הקובץ שמע שאני מקבל מעלמא רידר אפשר להחזיר בPOST נפרד חזרה למבקש)

      מייל: nigun@duck.com

      תגובה 1 תגובה אחרונה
      0
      • dovidD מנותק
        dovidD מנותק
        dovid
        ניהול
        כתב ב נערך לאחרונה על ידי
        #4

        מה שעשית אומר שלעולם לא יבוצעו שניים יחד, אם יש 3000 ביחד הם ישוחררו אחד אחד, כלומר תוך 9000 שניות. אני חושב שזה דרך רעה אבל לא נראה שזה הולך לשכנע אותך.
        סקרנות: הקובץ בתיקיית השיחות נשאר לנצח?

        עוד הערה, ייתכן שהgo myfunc מיותר, תוכל לשנות את סדר השורות שsend יהיה ראשון כך שמייד תחזור תשובה, ואחריה myfunc ללא gorutin.
        בקשר לmutex.Unlock, כדי לא לשכוח לשים זאת בסוף הפונקציה אפשר לכתוב זאת מייד אחרי השורה של הmutex.Lock רק להוסיף בראש השורה את המילה defer שמשמעותה לדחות את הביצוע עד סוף הפונקציה הנוכחית.

        • מנטור אישי בתכנות והמסתעף – להתקדם לשלב הבא!
        • בכל נושא אפשר ליצור קשר dovid@tchumim.com
        nigunN WWWW 2 תגובות תגובה אחרונה
        1
        • yossizY מנותק
          yossizY מנותק
          yossiz
          כתב ב נערך לאחרונה על ידי
          #5

          @nigun אמר בניטור כמות הgoroutines הפעילים בפונקציה:

          var wg sync.WaitGroup

          אפשר שאלה עמרצית? איך ניתן להשתמש במשתנה wg על ידי הצהרה בלבד בלי לאתחל אותו?

          📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

          dovidD תגובה 1 תגובה אחרונה
          0
          • yossizY yossiz

            @nigun אמר בניטור כמות הgoroutines הפעילים בפונקציה:

            var wg sync.WaitGroup

            אפשר שאלה עמרצית? איך ניתן להשתמש במשתנה wg על ידי הצהרה בלבד בלי לאתחל אותו?

            dovidD מנותק
            dovidD מנותק
            dovid
            ניהול
            כתב ב נערך לאחרונה על ידי dovid
            #6

            @yossiz בגו הכרזה על טיפוס ללא השמה, שקולה להשמה של ערכי ברירות מחדל.
            https://yourbasic.org/golang/structs-explained/

             var a Student    // a == Student{"", 0}
            

            הרי אם זה בשביל להציב בזה מופע אחר אז משתמשים ב*.

            • מנטור אישי בתכנות והמסתעף – להתקדם לשלב הבא!
            • בכל נושא אפשר ליצור קשר dovid@tchumim.com
            תגובה 1 תגובה אחרונה
            2
            • dovidD מנותק
              dovidD מנותק
              dovid
              ניהול
              כתב ב נערך לאחרונה על ידי dovid
              #7

              גם התקשורת עם asterisk בעזרת קבצים נראה לי הכי פרימטיבית מבין האפשרויות שיש פה:
              ~~http://the-asterisk-book.com/1.6/asterisk-fernsteuern.html~~
              https://wiki.asterisk.org/wiki/display/AST/Interfaces
              אני מציע לשחק עם האפשרויות האחרות ולהשיג שליטה יותר טובה.

              • מנטור אישי בתכנות והמסתעף – להתקדם לשלב הבא!
              • בכל נושא אפשר ליצור קשר dovid@tchumim.com
              תגובה 1 תגובה אחרונה
              0
              • dovidD dovid

                מה שעשית אומר שלעולם לא יבוצעו שניים יחד, אם יש 3000 ביחד הם ישוחררו אחד אחד, כלומר תוך 9000 שניות. אני חושב שזה דרך רעה אבל לא נראה שזה הולך לשכנע אותך.
                סקרנות: הקובץ בתיקיית השיחות נשאר לנצח?

                עוד הערה, ייתכן שהgo myfunc מיותר, תוכל לשנות את סדר השורות שsend יהיה ראשון כך שמייד תחזור תשובה, ואחריה myfunc ללא gorutin.
                בקשר לmutex.Unlock, כדי לא לשכוח לשים זאת בסוף הפונקציה אפשר לכתוב זאת מייד אחרי השורה של הmutex.Lock רק להוסיף בראש השורה את המילה defer שמשמעותה לדחות את הביצוע עד סוף הפונקציה הנוכחית.

                nigunN מנותק
                nigunN מנותק
                nigun
                כתב ב נערך לאחרונה על ידי
                #8

                @dovid אמר בניטור כמות הgoroutines הפעילים בפונקציה:

                מה שעשית אומר שלעולם לא יבוצעו שניים יחד, אם יש 3000 ביחד הם ישוחררו אחד אחד, כלומר תוך 9000 שניות. אני חושב שזה דרך רעה אבל לא נראה שזה הולך לשכנע אותך.

                זה בדיוק מה שאני צריך שזה יקח 9000 שניות ולא פחות (אפשר להגדיר פחות משניה אם צריך).

                סקרנות: הקובץ בתיקיית השיחות נשאר לנצח?

                לפי מה ששואף טען הקובץ נמחק מתי שהוא.

                גם התקשורת עם asterisk בעזרת קבצים נראה לי הכי פרימטיבית מבין האפשרויות שיש פה:
                https://wiki.asterisk.org/wiki/display/AST/Interfaces
                אני מציע לשחק עם האפשרויות האחרות ולהשיג שליטה יותר טובה.

                אני לא מומחה לאסטריסק ואני פועל על פי מה ש @שואף ו @WWW אמרו.
                יכול להיות שיש דרך יותר טובה לשלוח הודעות
                אבל זה לא סותר את הנקודה שצריך שליטה על הבקשות לפני שהם מגיעים לAPI של אסטריסק.

                מייל: nigun@duck.com

                dovidD תגובה 1 תגובה אחרונה
                0
                • dovidD dovid

                  מה שעשית אומר שלעולם לא יבוצעו שניים יחד, אם יש 3000 ביחד הם ישוחררו אחד אחד, כלומר תוך 9000 שניות. אני חושב שזה דרך רעה אבל לא נראה שזה הולך לשכנע אותך.
                  סקרנות: הקובץ בתיקיית השיחות נשאר לנצח?

                  עוד הערה, ייתכן שהgo myfunc מיותר, תוכל לשנות את סדר השורות שsend יהיה ראשון כך שמייד תחזור תשובה, ואחריה myfunc ללא gorutin.
                  בקשר לmutex.Unlock, כדי לא לשכוח לשים זאת בסוף הפונקציה אפשר לכתוב זאת מייד אחרי השורה של הmutex.Lock רק להוסיף בראש השורה את המילה defer שמשמעותה לדחות את הביצוע עד סוף הפונקציה הנוכחית.

                  WWWW מנותק
                  WWWW מנותק
                  WWW
                  כתב ב נערך לאחרונה על ידי
                  #9

                  @dovid אמר בניטור כמות הgoroutines הפעילים בפונקציה:

                  סקרנות: הקובץ בתיקיית השיחות נשאר לנצח?

                  השיחה מבוצעת והקובץ נמחק.
                  או לחילופין מועבר לתיקיה אחרת, - ניתן להגדרה.

                  WWW.netfree@gmail.com || קשבק! החזר כספי לבנק על רכישות באינטרנט || עונים על סקרים ומרוויחים כסף!

                  תגובה 1 תגובה אחרונה
                  1
                  • nigunN nigun

                    @dovid אמר בניטור כמות הgoroutines הפעילים בפונקציה:

                    מה שעשית אומר שלעולם לא יבוצעו שניים יחד, אם יש 3000 ביחד הם ישוחררו אחד אחד, כלומר תוך 9000 שניות. אני חושב שזה דרך רעה אבל לא נראה שזה הולך לשכנע אותך.

                    זה בדיוק מה שאני צריך שזה יקח 9000 שניות ולא פחות (אפשר להגדיר פחות משניה אם צריך).

                    סקרנות: הקובץ בתיקיית השיחות נשאר לנצח?

                    לפי מה ששואף טען הקובץ נמחק מתי שהוא.

                    גם התקשורת עם asterisk בעזרת קבצים נראה לי הכי פרימטיבית מבין האפשרויות שיש פה:
                    https://wiki.asterisk.org/wiki/display/AST/Interfaces
                    אני מציע לשחק עם האפשרויות האחרות ולהשיג שליטה יותר טובה.

                    אני לא מומחה לאסטריסק ואני פועל על פי מה ש @שואף ו @WWW אמרו.
                    יכול להיות שיש דרך יותר טובה לשלוח הודעות
                    אבל זה לא סותר את הנקודה שצריך שליטה על הבקשות לפני שהם מגיעים לAPI של אסטריסק.

                    dovidD מנותק
                    dovidD מנותק
                    dovid
                    ניהול
                    כתב ב נערך לאחרונה על ידי dovid
                    #10

                    @nigun אמר בניטור כמות הgoroutines הפעילים בפונקציה:

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

                    ה"שליטה" עליה אתה מדבר היא גישוש באפילה.
                    אם יש הגבלות כל שהם לכמות השיחות המקבילות (?) צריך לדעת בדיוק מה היא ולפעול בהתאם.
                    בשליחת הודעות בדרך אחרת, אתה כפי הנראה יכול לקבל סטטוס מדוייק מה קורה, ולפי זה להחליט מתי לשלוח את הבאה בתור.

                    • מנטור אישי בתכנות והמסתעף – להתקדם לשלב הבא!
                    • בכל נושא אפשר ליצור קשר dovid@tchumim.com
                    WWWW nigunN 2 תגובות תגובה אחרונה
                    0
                    • dovidD dovid

                      @nigun אמר בניטור כמות הgoroutines הפעילים בפונקציה:

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

                      ה"שליטה" עליה אתה מדבר היא גישוש באפילה.
                      אם יש הגבלות כל שהם לכמות השיחות המקבילות (?) צריך לדעת בדיוק מה היא ולפעול בהתאם.
                      בשליחת הודעות בדרך אחרת, אתה כפי הנראה יכול לקבל סטטוס מדוייק מה קורה, ולפי זה להחליט מתי לשלוח את הבאה בתור.

                      WWWW מנותק
                      WWWW מנותק
                      WWW
                      כתב ב נערך לאחרונה על ידי WWW
                      #11

                      @dovid אני אסביר מה קורה אצלי, כנראה יעזור להבנת העניין.

                      יש טראנק שמשמש לצינתוקים, הוא מוגבל נגיד ל 50 שיחות יוצאות בו זמנית.

                      צינתוק מתבצע באמצעות יצירת קובץ עם הנתונים המתאימים, (פקודה לניתוק מיד בעת המענה, וכן משך שיחה נגיד 10 שניות),

                      עכשיו מה שאני עושה, כשאני היחיד שמוציא צינתוקים, אני דוחף כל 11 שניות 50 קבצים לתיקייה.
                      (למען האמת אני לא עושה ככה, אלא מייצר כל 50 קבצים עם הפרש של 11 שניות לביצוע.)

                      לא אמור להיות שום בעיה עם זה.

                      WWW.netfree@gmail.com || קשבק! החזר כספי לבנק על רכישות באינטרנט || עונים על סקרים ומרוויחים כסף!

                      dovidD תגובה 1 תגובה אחרונה
                      0
                      • WWWW WWW

                        @dovid אני אסביר מה קורה אצלי, כנראה יעזור להבנת העניין.

                        יש טראנק שמשמש לצינתוקים, הוא מוגבל נגיד ל 50 שיחות יוצאות בו זמנית.

                        צינתוק מתבצע באמצעות יצירת קובץ עם הנתונים המתאימים, (פקודה לניתוק מיד בעת המענה, וכן משך שיחה נגיד 10 שניות),

                        עכשיו מה שאני עושה, כשאני היחיד שמוציא צינתוקים, אני דוחף כל 11 שניות 50 קבצים לתיקייה.
                        (למען האמת אני לא עושה ככה, אלא מייצר כל 50 קבצים עם הפרש של 11 שניות לביצוע.)

                        לא אמור להיות שום בעיה עם זה.

                        dovidD מנותק
                        dovidD מנותק
                        dovid
                        ניהול
                        כתב ב נערך לאחרונה על ידי
                        #12

                        @WWW תודה!

                        צינתוק מתבצע באמצעות יצירת קובץ עם הנתונים המתאימים, (פקודה לניתוק מיד בעת המענה, וכן

                        בין היתר, יש דרכים בהחלט טובות יותר לדעתי (בלי שום ניסיון).

                        • מנטור אישי בתכנות והמסתעף – להתקדם לשלב הבא!
                        • בכל נושא אפשר ליצור קשר dovid@tchumim.com
                        WWWW תגובה 1 תגובה אחרונה
                        0
                        • dovidD dovid

                          @nigun אמר בניטור כמות הgoroutines הפעילים בפונקציה:

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

                          ה"שליטה" עליה אתה מדבר היא גישוש באפילה.
                          אם יש הגבלות כל שהם לכמות השיחות המקבילות (?) צריך לדעת בדיוק מה היא ולפעול בהתאם.
                          בשליחת הודעות בדרך אחרת, אתה כפי הנראה יכול לקבל סטטוס מדוייק מה קורה, ולפי זה להחליט מתי לשלוח את הבאה בתור.

                          nigunN מנותק
                          nigunN מנותק
                          nigun
                          כתב ב נערך לאחרונה על ידי nigun
                          #13

                          @dovid
                          ההגבלות הם גם מצד הספק טראנק וגם מצד המגבלות של המכונה שלא עומדת בעומס של עשרות שיחות שנענות בבת אחת.
                          אז הדבר הכי בטוח הוא להגביל את כמות השיחות בו זמנית
                          למשל אם אני לא רוצה שיהיו יותר מעשר שיחות יוצאות בו זמנית
                          אני מגדיר שימתין שניה בין שיחה לשיחה ויגביל את אורך הציצול ל10 שניות, וכן הלאה
                          אמנם אני מפסיד קצת זמן במקרה ששיחה נענת וכרגע יש לי 9 שיחות פעילות, ואני יכול לדחוף עוד שיחה
                          אפשר להתחיל לנטר את כל השיחות שנענו אבל זה דורש כמובן משאבים וסיבוך נוסף של הקוד, שלא קריטי במקרה שלנו.
                          (זה שאלה מעניינת האם אפשר לשלוט בפונקציה ולדלג על השינה במקרה שהשיחה נענת אבל זה כבר סיפור אחר)
                          @WWW
                          החסרון בשיטה שלך הוא שאתה לא מפזר מספיק את העומסים
                          וגם מוגבל למשתמש אחד

                          מייל: nigun@duck.com

                          WWWW תגובה 1 תגובה אחרונה
                          0
                          • nigunN nigun

                            @dovid
                            ההגבלות הם גם מצד הספק טראנק וגם מצד המגבלות של המכונה שלא עומדת בעומס של עשרות שיחות שנענות בבת אחת.
                            אז הדבר הכי בטוח הוא להגביל את כמות השיחות בו זמנית
                            למשל אם אני לא רוצה שיהיו יותר מעשר שיחות יוצאות בו זמנית
                            אני מגדיר שימתין שניה בין שיחה לשיחה ויגביל את אורך הציצול ל10 שניות, וכן הלאה
                            אמנם אני מפסיד קצת זמן במקרה ששיחה נענת וכרגע יש לי 9 שיחות פעילות, ואני יכול לדחוף עוד שיחה
                            אפשר להתחיל לנטר את כל השיחות שנענו אבל זה דורש כמובן משאבים וסיבוך נוסף של הקוד, שלא קריטי במקרה שלנו.
                            (זה שאלה מעניינת האם אפשר לשלוט בפונקציה ולדלג על השינה במקרה שהשיחה נענת אבל זה כבר סיפור אחר)
                            @WWW
                            החסרון בשיטה שלך הוא שאתה לא מפזר מספיק את העומסים
                            וגם מוגבל למשתמש אחד

                            WWWW מנותק
                            WWWW מנותק
                            WWW
                            כתב ב נערך לאחרונה על ידי
                            #14

                            @nigun אמר בניטור כמות הgoroutines הפעילים בפונקציה:

                            החסרון בשיטה שלך הוא שאתה לא מפזר מספיק את העומסים
                            וגם מוגבל למשתמש אחד

                            אני יודע טוב טוב, אבל אתה יודע את הסיבה שעשיתי את זה ככה.

                            WWW.netfree@gmail.com || קשבק! החזר כספי לבנק על רכישות באינטרנט || עונים על סקרים ומרוויחים כסף!

                            nigunN תגובה 1 תגובה אחרונה
                            1
                            • dovidD dovid

                              @WWW תודה!

                              צינתוק מתבצע באמצעות יצירת קובץ עם הנתונים המתאימים, (פקודה לניתוק מיד בעת המענה, וכן

                              בין היתר, יש דרכים בהחלט טובות יותר לדעתי (בלי שום ניסיון).

                              WWWW מנותק
                              WWWW מנותק
                              WWW
                              כתב ב נערך לאחרונה על ידי
                              #15

                              @dovid אמר בניטור כמות הgoroutines הפעילים בפונקציה:

                              בין היתר, יש דרכים בהחלט טובות יותר לדעתי (בלי שום ניסיון).

                              אשמח לקבל... 🙂

                              WWW.netfree@gmail.com || קשבק! החזר כספי לבנק על רכישות באינטרנט || עונים על סקרים ומרוויחים כסף!

                              dovidD תגובה 1 תגובה אחרונה
                              0
                              • WWWW WWW

                                @nigun אמר בניטור כמות הgoroutines הפעילים בפונקציה:

                                החסרון בשיטה שלך הוא שאתה לא מפזר מספיק את העומסים
                                וגם מוגבל למשתמש אחד

                                אני יודע טוב טוב, אבל אתה יודע את הסיבה שעשיתי את זה ככה.

                                nigunN מנותק
                                nigunN מנותק
                                nigun
                                כתב ב נערך לאחרונה על ידי
                                #16

                                @WWW
                                אני יודע
                                ואני חושב שהפתרון הכי טוב הוא להקים שרת מיוחד לצינתוקים/הודעות קוליות
                                ולשלוח לשם את הכל.

                                מייל: nigun@duck.com

                                תגובה 1 תגובה אחרונה
                                0
                                • WWWW WWW

                                  @dovid אמר בניטור כמות הgoroutines הפעילים בפונקציה:

                                  בין היתר, יש דרכים בהחלט טובות יותר לדעתי (בלי שום ניסיון).

                                  אשמח לקבל... 🙂

                                  dovidD מנותק
                                  dovidD מנותק
                                  dovid
                                  ניהול
                                  כתב ב נערך לאחרונה על ידי
                                  #17

                                  @WWW שמתי לינקים לעיל.

                                  • מנטור אישי בתכנות והמסתעף – להתקדם לשלב הבא!
                                  • בכל נושא אפשר ליצור קשר dovid@tchumim.com
                                  תגובה 1 תגובה אחרונה
                                  0
                                  תגובה
                                  • תגובה כנושא
                                  התחברו כדי לפרסם תגובה
                                  • מהישן לחדש
                                  • מהחדש לישן
                                  • הכי הרבה הצבעות


                                  בא תתחבר לדף היומי!
                                  • התחברות

                                  • אין לך חשבון עדיין? הרשמה

                                  • התחברו או הירשמו כדי לחפש.
                                  • פוסט ראשון
                                    פוסט אחרון
                                  0
                                  • דף הבית
                                  • קטגוריות
                                  • פוסטים אחרונים
                                  • משתמשים
                                  • חיפוש
                                  • חוקי הפורום