تمت الإجابة ممكن شرح مبسط حول عبارة lock و Optimize code

تم تحميل الصفحة في 0,5501470 ثانية
ممكن شرح مبسط حول عبارة lock و Optimize code
الحالة
مغلق و غير مفتوح للمزيد من الردود.
إنضم
2 نوفمبر 2012
المشاركات
3,482
الإعجابات
2,944
النقاط
113
العمر
31
الإقامة
Algeria
السلام عليكم ورحمة الله وبركاته

ممكن شرح عربي بسيط حول lock دائما أجدها تستخدم مع الثريد

* وخاصية تحسين الكود موجودة في الفيجوال ستيديو Optimize code option in Visual Studio
ممكن أعرف فائدتها.
قرأت بعض الردود بالمنتديات الاجنبية لكني لم أستوعب فلغتي الانجليزية ضعيفة
 

;Null

Beginner Developer
rank
إنضم
18 أكتوبر 2016
المشاركات
75
الإعجابات
82
النقاط
18
يجب ان تهتم بال thread safety لبرنامجك
..
وهي التاكد ان متغير ما لا يمكن ان يستخدم من
اكثر من ثريد فى وقت واحد
..
مثال بسيط للذى يحدث اذا لم تستخدم lock
http://tpcg.io/whEb8O
شغل الكود فى visual studio افضل
..
واذا استخدمت lock
فالذى يحدث ببساطة*غير متاكد من ذلك مجرد اعتقاد*
ان الثريد الثانى يقف حتى ينتهى الثريد الاول من استخدام الليست
 

;Null

Beginner Developer
rank
إنضم
18 أكتوبر 2016
المشاركات
75
الإعجابات
82
النقاط
18
اما خاصية optimize code
لا تغيرها اتركها كما هي off

وعندما تنتهى من صناعة مشروعك تماما
ومستعد ان تعطيه لل users
يوجد combobox فى شريط الادوات
مختار وضع debug فيها
عندما تغيره الى وضع ال release
سيتم تغيير optimize code الى on
تلقائيا

Visual studio يضيف بعض التحسينات على البرنامج لا اكثر
 
إنضم
2 نوفمبر 2012
المشاركات
3,482
الإعجابات
2,944
النقاط
113
العمر
31
الإقامة
Algeria
دائما تنقذني و أجد لديك الحل ماشاء الله.
بخصوص Debug | release دائما أخرج المشروع النهائي release. لاني في السابق قرات أنها تتخلص من بعض الفنكش الخاصة بتتبع الأخطاء ...
مثل Debug.WriteLine لن تعمل في وضع Release

شكرا جزيلا على الاجابة الكافية والشافية.
 
الإعجابات: ;Null
إنضم
2 نوفمبر 2012
المشاركات
3,482
الإعجابات
2,944
النقاط
113
العمر
31
الإقامة
Algeria
يجب ان تهتم بال thread safety لبرنامجك
..
وهي التاكد ان متغير ما لا يمكن ان يستخدم من
اكثر من ثريد فى وقت واحد
..
مثال بسيط للذى يحدث اذا لم تستخدم lock
http://tpcg.io/whEb8O
شغل الكود فى visual studio افضل
..
واذا استخدمت lock
فالذى يحدث ببساطة*غير متاكد من ذلك مجرد اعتقاد*
ان الثريد الثانى يقف حتى ينتهى الثريد الاول من استخدام الليست
حسب كلامك ستحمي البرنامج من وقوع Deadlock :)
 
الإعجابات: ;Null

;Null

Beginner Developer
rank
إنضم
18 أكتوبر 2016
المشاركات
75
الإعجابات
82
النقاط
18
حسب كلامك ستحمي البرنامج من وقوع Deadlock :)
لا اخى ال deadlock يقع
اذا فى الثريد الاول انشأت lock على a
وداخل هذا ال lock
انشأت lock اخر على b

وفى الثريد الاخر عملت نفس الشئ بس بترتيب معاكس

هكذا

كود:
private readonly object A = new object();
private readonly object B = new object();
public void ThreadOneMethod()
{
  lock(A)
  {
    lock(B) { //... }
  }
}
public void ThreadTwoMethod()
{
  lock(B)
  {
    lock(A) { //... }
  }
}
العفو
 
إنضم
2 نوفمبر 2012
المشاركات
3,482
الإعجابات
2,944
النقاط
113
العمر
31
الإقامة
Algeria
لا اخى ال deadlock يقع
اذا فى الثريد الاول انشأت lock على a
وداخل هذا ال lock
انشأت lock اخر على b

وفى الثريد الاخر عملت نفس الشئ بس بترتيب معاكس

هكذا

كود:
private readonly object A = new object();
private readonly object B = new object();
public void ThreadOneMethod()
{
  lock(A)
  {
    lock(B) { //... }
  }
}
public void ThreadTwoMethod()
{
  lock(B)
  {
    lock(A) { //... }
  }
}
العفو
شكرا لك مرة أخرى على التوضيح أخي الحبيب
كنت أتمنى أن أجد دورات في المحتوى العربي تشرح هذه المواضيع المتقدمة
لكن للأسف الجميع يكرر الأساسيات فقط.
شكرا لك مرة أخرى على المساعدة
:]d (5):
 
الإعجابات: ;Null
الحالة
مغلق و غير مفتوح للمزيد من الردود.

الأعضاء النشطين حاليآ الذين يشاهدون هذا الموضوع (1 عضو و 0 ضيف)

خيارات الاستايل

نوع الخط
مودك
اخفاء السايدر بار OFF
توسيط المنتدى OFF
فصل الأقسام OFF
الأقسام الفرعية OFF
عرض المشاركات
حجم الخط
معلومات العضو OFF
إخفاء التوقيع OFF

إرجاع خيارات الإستايل