💻 آخرین فرصت یادگیری برنامه‌نویسی با آفر ویژه قبل از افزایش قیمت در ۱۵ آذر ماه (🎁 به همراه یک هدیه ارزشمند )
۰ ثانیه
۰ دقیقه
۰ ساعت
۱ علی صادق الوعد
نحوه اجرای PrintStack و println
Reza Mobaraki حل شده توسط Reza Mobaraki

سلام و وقت بخیر.

من دقت کردم توی اجرای برنامه اگر بجای fmt.Println از println خالی استفاده کنیم. داخل یک goroutine اجرا میشن و هربار که برنامه رو اجرا میکنیم با ترتیب‌های متفاوتی اجرا میشه. printstack هم دقیقا همینطوره.

این موارد توی بحث debugging مشکل ایجاد نمیکنه؟ یا اصلا چه کاربردی داره این که این دستورا به صورت همزمان اجرا بشن؟

البته با کد زیر میشه stack رو خارج از goroutine و به ترتیب اجرا کرد . ولی سوال اینه که چه فایده ای دارن اینها

fmt.Printf("Stack is %s", string(debug.Stack()))

سلام و درود بر شما!

استفاده از fmt.Println به جای println و همچنین استفاده از debug.Stack() در یک گوروتین امکان داره ترتیب اجرایی برنامه رو در هر بار اجرا تغییر بده. این موارد در زمان debugging ممکنه باعث مسئله بشه.

با استفاده از fmt.Println به جای println، امکان ایجاد parallel ( همزمانی) در نمایش خروجی‌ها وجود داره،یعنی چندین گوروتین میتونن به صورت همزمان خروجی بدن.

debug.Stack() به صورت parallel اجرا میشه و ممکنه توی ترتیب نمایش اطلاعات استک (stack) دچار تغییراتی بشه. این مورد میتونه توی دیباگینگ باعث ناهمخونی اطلاعات و خوانایی کد بشه.

موفق باشید?


بهترین پاسخ
Reza Mobaraki ۰۲ تیر ۱۴۰۲، ۲۰:۰۶