Многопоточность функции

 
0
 
.NET
ava
VP11 | 18.02.2013, 15:27
Доброго дня!

Я новенький на форуме и ищу помощи при программировании многопоточности.
Создание отдельного потока и выполнение расчета в нем не проблема для меня. Проблема появляется при запуске нескольких потоков одновременно для той же процедуры со своими параметрами.

Т.е. надо посчитать в н-потоках определенную процедуру и получить результат меняя параметры:
Поток   Парам1 Парам2 ....ПарамХ
1              0.1       75     ....
2              1       75     ....
3              4       75     ....
4              0.1       25     ....
5              1       25     ....
6              4       25     ....
...

Вызывая процедуру, сначала для данной процедуры назначаю параметрам их значения.
Но ее могу понять как при создании 2 потока изменить параметры, чтобы первый поток считал для своих раннее заданных параметров. Для меня проще было бы запуск процедуры с заданием ей параметров Call Schitaj (A, B),  но многопоточность исключает такую возможность.

Просьба простым языком или примером как возможно это сделать.

За раннее благодарен за ответ.
Ответы (2)
ava
diadiavova | 18.02.2013, 21:18 #
Ну вот как-то так видимо

Imports System.Threading
Module Module1

    Sub Main()
        For i = 1 To 5
            Dim th As New Thread(AddressOf ParametrizedMethod)
            th.Start(New With {.a = i * 1, .b = i * 2, .c = i * 3})
        Next
        Console.ReadKey()
    End Sub

    Sub ParametrizedMethod(parameters As Object)
        With parameters
            Console.WriteLine("{0} + {1} * {2} = {3}", .a, .b, .c, .a + .b * .c)
        End With

    End Sub
End Module

ava
VP11 | 22.02.2013, 10:00 #
Цитата (diadiavova @ 18.2.2013,  21:18)
Ну вот как-то так видимо


Imports System.Threading

Module Module1


  Sub Main()
    For i = 1 To 5
    Dim th As New Thread(AddressOf ParametrizedMethod)
    th.Start(New With {.a = i * 1, .b = i * 2, .c = i * 3})
    Next
    Console.ReadKey()
  End Sub


  Sub ParametrizedMethod(parameters As Object)
    With parameters
    Console.WriteLine("{0} + {1} * {2} = {3}", .a, .b, .c, .a + .b * .c)
    End With


  End Sub

End Module




Большое спасибо все работает прекрасно.
Теперь мучаюсь с кодом расчета.
Зарегистрируйтесь или войдите, чтобы написать.
Фирма дня
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Участники
advanced
Отправить