PDA

View Full Version : مولتی ترد کردن یک تابع



s3rv3r
شنبه 15 مهر 1391, 13:47 عصر
سلام عزیزان.

بنده یک تابعی دارم به این شکل



privat void msbold(int rowid)
{
.
.
array[rowsid]= data;
}


به این تابع ورودی های مختلف داده میشه به ترتیب . 1و2و3و4و... معلوم نیست چندتا.
این یه کاری انجام میده میریزه تو Data و اخر کار تابع اون data به خانه ارایه منتقل میشه
کسی میتونه یه کمکی مثالی بکنه؟

از الطاف شما سپاسگذارم. ممنون میشم راهنماییم کنید.

مسعود اقدسی فام
شنبه 15 مهر 1391, 14:09 عصر
راستش اصلا متوجه سوالتون نشدم. الان دقیقا چی می‌خواید؟ کجا مولتی ترد شه؟

s3rv3r
شنبه 15 مهر 1391, 14:34 عصر
راستش اصلا متوجه سوالتون نشدم. الان دقیقا چی می‌خواید؟ کجا مولتی ترد شه؟

سلام عزیز.



privati void startwork()
{
for(int i=0;i<14;i++)
{
data = webrequst("address site"+i);
array[i]=data;
}
}

برنامه با یه ترد به این شکل نوشته بودم
این حلقه یه عددی به یورل اضافه میکنه و میده به تابع وب . اون تابع وب هم یه کاراکتر دنبالشه پیدا میکنه میزاره تو دیتا . حالا داخل اون تابع وب رکوئیست هم حلقه و اینا هست که معلوم نیست چقد زمان ببره کارارو انجام بده
چون وب رکوئست هست. و یه ترد خیلی زمان بره میخوام مولتی ترد کنم. که مثلا با 5 تا ترد این کارا انجام بشه.
امیدوارم منظورمو متوجه شده باشید

vaheeed
شنبه 15 مهر 1391, 14:51 عصر
یه خورده قاطی پاتی شد نفهمیدم ولی درمورد مولتی ترد ببین اگه کارهات به صورت موازی انجام میشه میتونی از مولتی ترد استفاده کنی . منظورم از موازی یعنی یک ترد کارش گیره یک ترد دیگه نباشه . مولتی ترد مثل این میمونه که یک کار رو جا اینکه به چند نفر بدی به چند نفر میدی خوب مسلما نباید کارها با هم درگیر باشن مثلا نمیشه یه ترد2 بیاد داخل خونه 5 ارایه یه مقدار بزاره در حالی که اول باید ترد1 داخل 5 مقدار بزاره و بعد ترد 2 بیاد و رو اون مقدار یه پردازشی انجام بده

میخوای مرورگر واسه هک بنویسی؟!!:چشمک:

s3rv3r
یک شنبه 16 مهر 1391, 16:12 عصر
کسی نیست به ما کمک برسونه؟

مسعود اقدسی فام
یک شنبه 16 مهر 1391, 18:37 عصر
سلام عزیز.



privati void startwork()
{
for(int i=0;i<14;i++)
{
data = webrequst("address site"+i);
array[i]=data;
}
}

برنامه با یه ترد به این شکل نوشته بودم
این حلقه یه عددی به یورل اضافه میکنه و میده به تابع وب . اون تابع وب هم یه کاراکتر دنبالشه پیدا میکنه میزاره تو دیتا . حالا داخل اون تابع وب رکوئیست هم حلقه و اینا هست که معلوم نیست چقد زمان ببره کارارو انجام بده
چون وب رکوئست هست. و یه ترد خیلی زمان بره میخوام مولتی ترد کنم. که مثلا با 5 تا ترد این کارا انجام بشه.
امیدوارم منظورمو متوجه شده باشید

والا توضیحتون گنگ بود. ولی فکر کنم می‌خوای WebRequest رو با ترد اجرا کنی. آره؟ خب مشکلت چیه؟ کدنویسی؟

s3rv3r
یک شنبه 16 مهر 1391, 19:32 عصر
والا توضیحتون گنگ بود. ولی فکر کنم می‌خوای WebRequest رو با ترد اجرا کنی. آره؟ خب مشکلت چیه؟ کدنویسی؟
دقیقا webrequest رو میخوام با ترد انجام بدم.
با یه ترد کارا انجام میشه ولی کند پیش میره.
کار چیزی مثله web crawler هستش. یه صفحه پیدا میشه بعد شروع میکنه لینک های صفحه رو در میاره.
حالا میره سراغ تک تک اون صفحات و لینک ها رو در میاره. این کار تا جایی که لینک تکراری پیدا نشه ادامه پیدا میکنه.

حالا همه این کارا با یه ترد انجام میشه ولی من میخوام با 5 تا ترد انجام بدم. لینک ها که دراومد بریزم تو لیست. ترد های دیگه که بیکار هستن بیان از لیست بردارن و پردازش کنن(webrequest بفرستن و نتیجه رو پردازش کنن)

مسعود اقدسی فام
یک شنبه 16 مهر 1391, 22:33 عصر
کار کردن با نخ رو بلدید و روش کار رو می‌خواید؟ یا لازمه کار با نخ رو هم بنویسم؟

Sajjad.Aghapour
دوشنبه 17 مهر 1391, 08:56 صبح
میتونید از Task ها استفاده کنید:

privati void startwork()
{
for(int i=0;i<14;i++)
{
data = webrequst("address site"+i);
array[i]=data;
}

Task.Factory.StartNew(() => this.Process(array.ToList)));
//The following can help u
//Parallel.Invoke(() => this.Process(list));
}

private void Process(List<int> links)
{
//
}