خطای contextswitch deadlock
سلام من در برنامم لیستی از اشیا دارم که به صورت پویا و در یک حلقه for پر می شود. لازم است در این حلقه بررسی شود که اگر شی موردنظر قبلا در لیست درج شده دیگر درج نشده و متغییری مربوط به آن شی افزایش یابد. برای این کار از توابع list.find و list.indexof استفاده کرده ام چون این دو تابع زمان اجرای کندی دارند تصمیم گرفتم از یک hashtable استفاده کنم که کلید آن مقداری از شی و مقدار آن محل قرارگیری آن شی در لیست است تا بدینصورت سرعت را افزایش دهم. اما به محض اضافه کردن این کد به برنامه, دیگه برنامه اجرا نشد و در هر اجرا پیغام ContextSwitchDeadlock was detected را داد. البته من در برنامم از یک hashtable دیگه هم استفاده کردم . لطفا راهنمایی ام کنید که مشکل از چیه و چرا این خطا رو میده؟ البته به محض اینکه برنامه را به حالت قبلی برمیگردونم جواب میده ولی چون سرعت برنامه پایینه و می خوام افزایش بدم دوست دارم دو تابع list.find و list.indexof را حذف کنم .
نقل قول: خطای contextswitch deadlock
چطور فکر میکنید سرعت جستجوی کلید در HashTable با سرعت IndexOf و Find متفاوت هست؟ لیست برای جستجو از Equals اشیاء استفاده میکنه (که در نهایت باید به مقایسه کلیدها منجر بشه).
به نظر میاد هر دو از (O(n باشن مگه اینکه HashTable از نوع Sorted باشه.
نقل قول: خطای contextswitch deadlock
من در اینترنت سرچ کردم تابع hashtable.containskey از (1)O است
نقل قول: خطای contextswitch deadlock
فکر نمیکنم اینطور باشه...