منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
[VB.NET] كيفية تشغيل اكتر من Thread فى نفس الوقت ؟ - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : قسم لغة الفيجوال بيسك VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=182)
+--- قسم : قسم اسئلة VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=183)
+--- الموضوع : [VB.NET] كيفية تشغيل اكتر من Thread فى نفس الوقت ؟ (/showthread.php?tid=20161)

الصفحات: 1 2


كيفية تشغيل اكتر من Thread فى نفس الوقت ؟ - الماجيك مسعد - 27-04-17

السلام عليكم

كيف تتحكم بعدد الثريدات مثلا 100 بنفس الثانية

يعنى انا احدد عدد العمليات مثلا 5 او 10 ويبدء العلميات كلها فى نفس الوقت
يعنى مثلا لو اخترت 5 يبقا يشتغل ال5 عمليات فى نفس الثانية وهكذا

للتوضيح اكتر

مثلا هذا الكود
كود :
mg = New Thread(AddressOf test) With {.IsBackground = True}
        mg.Start()

Sub test
list.add("new item to test")
end sub

لو مثلا عايز 3 عمليات يبقا المفروض اعمل كدا

كود :
mg1 = New Thread(AddressOf test) With {.IsBackground = True}
        mg1.Start()


mg2 = New Thread(AddressOf test) With {.IsBackground = True}
        mg2.Start()


mg3 = New Thread(AddressOf test) With {.IsBackground = True}
        mg3.Start()
طريقة مرهقة جدا ومتنفعش فى بعض الاوقات

مثلا لو عندى حلقة دوران فيها مثلا 100 الف

اكيد ف طريقة اسهل وافضل من كل ذلك

بتحديد عدد العمليات اتمنى المساعدة والتوضيح لطلبي هذا

مشكورين مقدما




RE: كيفية تشغيل اكتر من Thread فى نفس الوقت ؟ - silverlight - 27-04-17

حاول تستخدم Task Class فيه روتين اسمه Task.Run


RE: كيفية تشغيل اكتر من Thread فى نفس الوقت ؟ - الماجيك مسعد - 27-04-17

(27-04-17, 11:42 AM)silverlight كتب : حاول تستخدم Task Class فيه روتين اسمه  Task.Run

يعنى مينفعش تحكم بعدد الثريدات ؟


RE: كيفية تشغيل اكتر من Thread فى نفس الوقت ؟ - silverlight - 27-04-17

ضعهم في مصفوفة


RE: كيفية تشغيل اكتر من Thread فى نفس الوقت ؟ - الماجيك مسعد - 27-04-17

(27-04-17, 11:52 AM)silverlight كتب : ضعهم في مصفوفة

طيب ممكن كود بسيط كمثال


RE: كيفية تشغيل اكتر من Thread فى نفس الوقت ؟ - silverlight - 27-04-17

يا أخ مسعد

فيه شئ اسمه Action Deleagate وكل ما في الأمر انك محتاج تبني مصفوفة List of Action و تمرر لها الروتينات
ثم تقوم بعمل loop علي المصفوفة  و تنفذ كل روتين

و الأفضل لك تستخدم Task class فيه مميزات أفضل لتنفيذ ما تريده
و النت ملئ ب الامثلة


RE: كيفية تشغيل اكتر من Thread فى نفس الوقت ؟ - الماجيك مسعد - 27-04-17

(27-04-17, 12:11 PM)silverlight كتب : يا أخ مسعد

فيه شئ اسمه Action Deleagate وكل ما في الأمر انك محتاج تبني مصفوفة List of Action و تمرر لها الروتينات
ثم تقوم بعمل loop علي المصفوفة  و تنفذ كل روتين

و الأفضل لك تستخدم Task class فيه مميزات أفضل لتنفيذ ما تريده
و النت ملئ ب الامثلة

اسف جدا لازعاجك

ولكن للاسف انا خبرتى قليلة

ولم اتعامل مع هذه الامور من قبل

ولكى افهم هحتاج مثال على كودى هذا عشان اقدر افهم

mg = New Thread(AddressOf test) With {.IsBackground = True}
mg.Start()

Sub test
list.add("new item to test")
end sub

لذا ساحاول البحث اكتر

وايضا انتظر مساعدة بعض الاعضاء


RE: كيفية تشغيل اكتر من Thread فى نفس الوقت ؟ - silverlight - 27-04-17

PHP كود :
Private Sub Form1_Load(sender As ObjectAs EventArgsHandles MyBase.Load

        For Each f 
As Func(Of StringIn GetNames()
 
           MessageBox.Show(f())
 
       Next

        For Each a 
As Action In GetActions()
 
           a()
 
       Next
    End Sub

    Private Iterator 
Function GetNames() As IEnumerable(Of Func(Of String))

 
       Yield Function() "magic"
 
       Yield Function() "mostafa"
 
       Yield Function() "Adel"
 
       Yield AddressOf GetName

        Return
    End 
Function

 
   Private Function GetName() As String
        Return 
"any name"
 
   End Function

 
   Private Iterator Function GetActions() As IEnumerable(Of Action)
 
       Yield Sub()
 
                 MessageBox.Show("عمر")
 
             End Sub
        Yield Sub
()
 
                 MessageBox.Show("فريد")
 
             End Sub

        Yield Sub
()
 
                 MessageBox.Show("فاروق")
 
             End Sub

        Yield AddressOf create

        Return

    End 
Function

 
   Private Sub create()
 
       MessageBox.Show("انتهي")
 
   End Sub 

أو

PHP كود :
Public Class Form1

    Private names 
As New List(Of String)()

 
   Private Sub Form1_Load(sender As ObjectAs EventArgsHandles MyBase.Load

        Dim threads 
As List(Of Threading.Thread) = New List(Of Threading.Thread)()
 
       threads.Add(New Threading.Thread(AddressOf doActionWith {.IsBackground True})
 
       threads.Add(New Threading.Thread(AddressOf doActionWith {.IsBackground True})
 
       threads.Add(New Threading.Thread(AddressOf doActionWith {.IsBackground True})
 
       threads.Add(New Threading.Thread(AddressOf doActionWith {.IsBackground True})
 
       threads.Add(New Threading.Thread(AddressOf doActionWith {.IsBackground True})

 
       threads.Add(New Threading.Thread(Sub()
 
                                            names.Add("Test")
 
                                        End SubWith {.IsBackground True})

 
       threads.Add(New Threading.Thread(Sub()
 
                                            names.Add("Test")
 
                                        End SubWith {.IsBackground True})

 
       threads.ForEach(AddressOf StartThread)

 
   End Sub

    Private Sub StartThread
(As Threading.Thread)
 
       t.Start()
 
   End Sub

    Private Sub doAction
()
 
       names.Add("Test")
 
   End Sub

    Private Sub Add
(As String)
 
       ListBox1.Items.Add(s)
 
   End Sub

    Private Sub Button1_Click
(sender As ObjectAs EventArgsHandles Button1.Click
        
' إظهار النتائج
        names.ForEach(AddressOf Add)
    End Sub

End Class 



RE: كيفية تشغيل اكتر من Thread فى نفس الوقت ؟ - الماجيك مسعد - 27-04-17

بارك الله فيك

طيب ايه رايك في
Parallel.For(0, ips_count - 1, New ParallelOptions With {.MaxDegreeOfParallelism = 61},
Sub(i)


RE: كيفية تشغيل اكتر من Thread فى نفس الوقت ؟ - silverlight - 28-04-17

متهيألي الموضوع بقي واضح و سهل