با سلام. لطفا دررابطه با مطلب زیر راهنماییم کنید. باتشکر
دارم الگوریتم toom-cook که الگوریتم ضرب سریع دو عدد بزرگ هست رو پیاده سازی میکنم، منتهی بخاطر سرعت بخشیدن بهش میخوام بصورت چندنخی بنویسم. تازه شروع به برنامه نویسی چند نخی کردم و چیز زیادی یاد ندارم . فقط تا حدی میدونم Lock ها چی هستن و هر thread چطور lock یک شیء رو تسخیر میکنه و synchronization بین چند نخ که روی یک منبع کار میکنن، چطور باید صورت بگیره.
توی الگوریتمی که دارم پیاده سازی میکنم، قسمتی داره که دو عدد باید بصورت یک چند جمله ای دربیان. تبدیل کردن هر عدد به چندجمله ای به عدد دیگه ربطی نداره. میخوام اینکارو بصورتی انجام بدم که تبدیل هر عدد به چندجمله ای توسط یک نخ انجام بشه. چندتا سوال برام ایجاد شده:
1. من برای تبدیل کردن، متدی ساختم مثلا با نام A که تبدیل هردو عدد داخلش صورت میگیره. وقتی داخل این متد نخ بسازم واجراش کنم، این نخ دقیقا Lock چه شیئی رو میگیره؟!
2. الگوریتم بصورت بازگشتی انجام میشه. توی این حالت، نکات مربوط به synchronization باید رعایت بشه؟ یعنی وقتی از داخل یک متد (مثلا B) که داخلش بصورت چندنخی کدشو زدم، دوباره خودش فراخوانی کنم، خطاهای starvation و deadlock بوجود میان یا ن؟
3. پایین آدرس پستی هست که در codereview ارسال کردم، منتهی کسی جواب نداده. 😓 کدم اونجاست، اگر تونستید یه نگاه بهش بندازید و. توی قسمت اطلاع رسانی به متد main هم مشکل دارم که انتهای کدم توی همون پست گفتم. لطفا بگید که ایا ساختار کدم درسته یا باید تصحیح بشه. کد