ورود

View Full Version : ایجاد ترد



TheMatrix
جمعه 21 دی 1386, 18:01 عصر
سلام دوستان میخواستم ببینم میشه یکی از دوستان لطف کن یه تکه کد خیلی ساده بده که توش یه ترد جدید ایجاد و شروع به کار کنه.
البته من با VS08 کار میکنم.
یه کم هم اگه میشه کد رو تحلیل کنید ممنون میشم.

Nima_NF
جمعه 21 دی 1386, 21:35 عصر
#include "stdafx.h"
#include <iostream>
#include <process.h>
#include <windows.h>

void Thread2 (void *nothing );

using namespace std ;
int x = 0;

int _tmain(int argc, _TCHAR* argv[])
{
cout << "Main Thread is working." << endl;
_beginthread (Thread2, 0, NULL) ;

// you can do other tasks here
Sleep(500);
cout << "x is :" << x << endl;

getchar();
return 0;
}

void Thread2 (void *nothing )
{
cout << "Thread 2 is working." << endl;

while (true)
{
x++;
if ( x >= 1000000000 ) // until one million
{
cout << "Thread 2 finished." << endl;
_endthread(); // finish and exit thread
}
}
}

فقط یک نمونه بسیار ساده هست ،
مثلا مقدار x را که به صورت متغیر عمومی تعریف شده است تا مقدار یک ملیون (یک واحد یک واحد) در حلقه بی نهایت اضافه می کند و در عین حال شما می توانید اعمال دیگری را در داخل تابع main خود (یعنی thread اصلی یا همان thread شماره 1) به همان ترتیب قبل ادامه یابد.

یعنی x بعد از نیم ثانیه توقف دوباره چاپ می شود. این در حالی هست که این دو عمل (اعمال داخل دو تابع) به طور همزمان و همروند در حال اجرا هستند.
فقط جهت تاکید بدانید که همیشه کار با thread ها به همین سادگی نیست و پیش نیاز آن داشتن اطلاعات کافی در زمینه سیستم عامل (مثل سمافور ، مانیتور ، ناحیه بحرانی و ...) می باشد.

wskfhut
سه شنبه 01 آذر 1390, 08:05 صبح
بسیار بسیار سپاسگذار