فایل های مشابه شاید از این ها هم خوشتان بیاید !!!!
توضیحات محصول دانلود پاورپوینت آموزش برنامه نويسي چند نخي و بررسی ايجاد و خاتمه نخ در POSIX (کد12923)
دانلود پاورپوینت آموزش برنامه نویسی چند نخی و بررسی ایجاد و خاتمه نخ در POSIX
\nبرنامه نویسی چند نخی با POSIX
\n\n عنوان های پاورپوینت :
\n\nآموزش برنامه نویسی چند نخی و بررسی ایجاد و خاتمه نخ در POSIX
\nبرنامه نویسی چند نخی با POSIX
\nفهرست مطالب
\nنخ (thread)
\nمستقل بودن
\nهمروندی(concurrency)
\nمزایای برنامه نویسی چند نخی
\nمشکلات برنامه نویسی چند نخی
\nPOSIX
\nپیاده سازی نخ
\nلایه های انتزاعی
\nسه مدل پیاده سازی نخها
\nچند به یک
\nیک به یک
\nچند به چند
\nانواع مدل های نخ کشی
\nمدل نخ کشی Pthread
\nmain thread
\nایجاد نخ
\nپایان ن
\nارسال پارامتر به نخ
\nمثال – ارسال پارامتر به نخ
\nالحاق(joining)
\nقابلیت الحاق
\nارتباط بین نخها
\nارتباط بین نخها
\nروشهای همگام سازی
\nMutex
\nقفلهای خواندن- نوشتن
\nمتغیرهای شرطی
\nمتغیرهای شرطی
\nفضای آدرسی نخ
\n \n\n \n\n
\n\nقسمت ها و تکه های اتفاقی از فایل\n\n \n\nارتباط بین نخها\n\nمتغیرهای سراسری\n\nپارامترهای ارسالی به نخ بهنگام ایجاد نخ\n\nفایلها\n\nمشکل : دسترسی همزمان به منابع\n\nارتباط بین نخها\n\nروشهای همگام سازی\n\nهمگام سازی\n\nارتباط بین نخها از طریق به اشتراک گذاشتن منابع سخت افزاری و نرم افزاری ممکن است که برای دسترسی به آنها نیاز به همگام سازی وجود دارد. \n\nمکانیزم های همگام سازی\n\nسمافور و mutex \n\nقفلهای خواندن-نوشتن\n\nمتغیرهای شرطی\n\nMutex\n\nمنبع اشتراکی: داده \n\nبا استفاده از متغیرهای سراسری یا فایلها\n\nمشکل: شرایط رقابتی در دسترسی به ناحیه حافظه\n\nناحیه بحرانی: قطعه ای از کد که روی ناحیه مشترک تغییرات ایجاد می نماید\n\nراه حل: انحصار متقابل در ناحیه بحرانی\n\nmutex : سمافور دودویی برای جلوگیری از شرایط رقابتی در ناحیه بحرانی\n\nMutex\n\nتوالی عملیات نمونه برای استفاده از mutex \n\nایجاد و مقدار دهی اولیه mutex\n\nتلاش چند نخ برای قفل کردن mutex\n\nموفق شدن فقط یک نخ و در اختیار گرفتن mutex\n\nاجرای تعدادی دستور توسط نخی که mutex را در اختیار دارد \n\nباز کردن قفل توسط نخی که mutex را در اختیار دارد \n\nسایر نخها mutex را در اختیار گرفته و تکرار مراحل فوق\n\nآزادسازی mutex\n\nMutex\n\nتعریف و مقداردهی اولیه mutex\n\nتعریف متغیر از نوع pthread_mutex_t \n\nمقداردهی اولیه\n\nایستا در زمان تعریف\n\npthread_mutex_t mutex =PTHREAD_MUTEX_INITIALIZER; \n\nپویا, با استفاده از روال pthread_mutex_init()\n\nبا استفاده از شیء خصیصه می توان خصوصیات شیء mutex را نیز تعریف نمود.\n\nMutex\n\nآزاد سازی اشیا\n\nآزاد سازی شیء mutex با استفاده از روال\n\npthread_mutex_destroy()\n\nآزاد سازی شیء خصیصه mutex\n\npthread_mutexattr_destroy()\n\nMutex\n\nقفل گذاریmutex \n\nقفل با روال : pthread_mutex_lock()\n\nدر صورتیکه mutex قبلاً توسط نخی قفل شده باشد، نخ فراخواننده روال بلاک می شود تا زمانیکه قفل mutex آزاد گردد.\n\nقفل با روال : pthread_mutex_trylock()\n\nدر صورتیکه mutex قبلاً توسط نخی قفل شده باشد، روال خاتمه سافته و خطایی مبنی بر busy بر می گرداند(مناسب برای جلوگیری از deadlock).\n\nبازکردن قفل mutex\n\nفراخوانی روال pthread_mutex_unlock() توسط نخ قفل کننده mutex\n\ntypedef struct{\n\n double *a;\n\n double *b;\n\n double sum; \n\n int veclen; \n\n}DOTDATA;\n\n#define NUMTHRDS 4\n\n#define VECLEN 100\n\nDOTDATA dotstr; \n\npthread_t callThd[NUMTHRDS];\n\npthread_mutex_t mutexsum;\n\nvoid *dotprod(void *arg)\n\n{\n\n int i, start, end, len ;\n\n long offset;\n\n double mysum, *x, *y;\n\n offset = (long)arg;\n\n len = dotstr.veclen;\n\n start = offset*len;\n\n end = start len;\n\n x = dotstr.a;\n\n y = dotstr.b;\n\n mysum = 0;\n\n for (i=start; i<end ; i ) {\n\n mysum = (x[i] * y[i]);\n\n }\n\n \n\n pthread_mutex_lock (&mutexsum);\n\n dotstr.sum = mysum;\n\n pthread_mutex_unlock (&mutexsum);\n\n pthread_exit((void*) 0);\n\n}\n\nint main (int argc, char *argv[])\n\n{\n\n long i;\n\n double *a, *b;\n\n void *status;\n\n pthread_attr_t attr;\n\n a = (double*) malloc (NUMTHRDS*VECLEN*sizeof(double));\n\n b = (double*) malloc (NUMTHRDS*VECLEN*sizeof(double));\n\n for (i=0; i<VECLEN*NUMTHRDS; i ){\n\n a[i]=1.0;\n\n b[i]=a[i];\n\n }\n\n dotstr.veclen = VECLEN; \n\n dotstr.a = a; \n\n dotstr.b = b; \n\n dotstr.sum =0;\n\n \n\n pthread_mutex_init(&mutexsum, NULL);\n\n pthread_attr_init(&attr);\n\n pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE);\n\n \n\n for(i=0; i<NUMTHRDS; i ){\n\n pthread_create(&callThd[i], &attr, dotprod, (void *)i);\n\n }\n\n pthread_attr_destroy(&attr);\n\n for(i=0; i<NUMTHRDS; i )\n\n pthread_join(callThd[i], &status);\n\n printf ("Sum = %f n", dotstr.sum);\n\n free (a);\n\n free (b);\n\n pthread_mutex_destroy(&mutexsum);\n\n pthread_exit(NULL);\n\n} \n\nقفلهای خواندن- نوشتن\n\nورود چند نخ به ناحیه بحرانی \n\nدر صورتیکه فقط عمل خواندن توسط نخها صورت پذیرد\n\nدر صورتیکه یک نخ عمل نوشتن را انجام دهد سایر نخها نمی توانند وارد ناحیه بحرانی گردند.\n\nمتغیرهای شرطی\n\nامکان همگام سازی بر اساس مقادیر داده\n\nmutex بر اساس دسترسی به داده همگام سازی می نمود\n\nPolling\n\nمتغیرهای شرطی همیشه با یک mutex بکار می روند\n\nمتغیرهای شرطی\n\nمراحل کار\n\nتعریف و مقداردهی اولیه متغیرهای سراسری: در نخ اصلی\n\nتعریف و مقدار دهی شیء متغیرهای شرطی: در نخ اصلی\n\nتعریف و مقداردهی متغیر mutex :در نخ اصلی\n\nایجاد دو نخ A و B\n\nفضای آدرسی نخ\n\nهر داده ای که آدرسش توسط یک نخ تعیین می گردد، در فرآیند برای همه نخها قابل دسترسی هست.\n\nشامل متغیرهای ایستا، متغیرهای خودکار و حافظه های تخصیصی با malloc\n\nاین بدین معنا نیست که هر نخ نمی تواند داده اختصاصی داشته باشد.\n\n \n\n \n\n30 تا 70 درصد پروژه | پاورپوینت | سمینار | طرح های کارآفرینی و توجیهی | پایان-نامه | پی دی اف مقاله ( کتاب ) | نقشه | پلان طراحی | های آماده به صورت رایگان میباشد ( word | pdf | docx | doc )