برای فراخوانی همزمان توابع ، خوبه.در رابطه با سوال آخرم، فکر میکنم استفاده از Invoke راه حل باشه،چون میخواهیم Function صدا بزنیم
نه دیگه ، نشد! قرار نبود همزمان داده ها رو دستکاری کنن ، وگرنه مشکلات عدیده ای پیش می یاد (و باید روی داده ها lock بذاری که گند می زنه به پرفورمنس)هنوز متوجه نشدم که وقتی مثلا F۱ داره روی Table۱ محاسبات میکنه و F۲ هم روی همون Table قراره محاسبات بکنه و F۱ و F۲ پرللل هستند و F۲ باید بد از اجرای پردازش توسط F۱ کارش رو انجام بده چطور میشه از دستکاری اطلاعات توسط F۲ قبل از F۱ جلوگیری کرد.
ربطی به کامپایلر نداره. هر دوی زبان ها دسترسی به یک رانتایم و ThreadPool و کلاس لایبرری ... دارند و مدل هر دو Shared Memory هست. فقط در بعضی موارد کد نوشته شده در اف شارپ تمیز تر و کوتاه تره (تو که میخوای داده هات رو دستکاری کنی ، چه فرقی می کنه با سی شارپ باشه یا اف شارپ). تازه بخوای به تعداد زیاد داده ها رو duplicate کنی (تا بخوای دادۀ اصلی دست نخورده باقی بمونه و به ارمان های immutability پایبند بمونی) مشکلات ناشی از کپی کردن و نیز بعدش Synchronization خواهی داشت که باز به حرف من می رسی که بهتره کدت رو اصلا موازی نکنی.به عبارتی همون مثل که کدش رو خدماتتون دادم رو ببینید یه جورای ته دلم میترسه از کار موازی تو C# ، فکر میکنم F# کمپیلرش خودش هندل میکنه این چیزارو و دلیل اینکه اوریجینال دیتا رو دست نمیزنه همینه .
ببین برادر: تو با توجه به سوالایی که می پرسی تجربۀ خیلی زیادی در مورد برنامه نویسی موازی نداری. بهتره که کدت رو همونطور که هست بذاری باقی بمونه (اگر میخوای یاد بگیری ، خب برو کتاب بخون و از صفر با مفاهیم اشنا بشو. من که نمی تونم وقت بذارم پروژۀ تو رو انجام بدم؛ که اگر انجام هم بدم باز بعدها مشکل خواهی داشت در ادامه و نگهداری برنامه ات)