Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
34 / 34 / 16
Регистрация: 07.04.2011
Сообщений: 103

[Многопоточность] Выбор алгоритма

26.01.2013, 16:24. Показов 1261. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Пишу программу, что-то вроде многопоточного лайкера. Каждый поток (со своим аккаунтом) пытается лайкнуть и в зависимости от успеха/неудачи инкрементирует переменные goods/bads соответственно. Но главный поток каждому второстепенному "выдает" один аккаунт. И если, допустим, изначально было задано лайкнуть 10 раз, а 2 из 10 второстепенных потоков не справились со своей задачей, то выполнится только 8. Так вот, как и где лучше алгоритмически будет запустить еще 2 потока (или может быть даже более. Если и эти два не справятся) ? После основного цикла (когда все потоки закончили свою работу) в главном потоке делать проверку на (goods==count) и запускать еще (count-goods) потоков ? и так в цикле, до тех пор пока не будет goods==count?
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
26.01.2013, 16:24
Ответы с готовыми решениями:

Многопоточность и вычисления: выбор оптимальной стратегии
Есть некоторый массив float acc Нужно произвести модификацию элементов этого массива, путём многократного прибавления(M>>SIZE)...

Выбор алгоритма сортировки
Доброе время суток! В универе дали вот такое задание Предположим, что необходимо отсортировать массив, состоящий из нескольких...

Выбор правильного алгоритма
Поставленная задача выполняется не правильно. В чем же дело... Дан список группы в 10 человек в виде ФАМИЛИЯ ИМЯ ОТЧЕСТВО...

2
62 / 62 / 5
Регистрация: 05.01.2013
Сообщений: 235
26.01.2013, 17:10
Лучший ответ Сообщение было отмечено Nikolay_W как решение

Решение

если я вас правильно понял, метод потока
C#
1
2
3
4
5
6
7
8
9
10
11
void potok(){
potoknoend=true;
while(potoknoend){
//выполняем, что нужно. 
 
// далее если успешно то
potoknoend=false; // выходим из цикла и завершаем поток. а если ошибка, то цикл повторяется
 
 
}
}
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
26.01.2013, 21:29
Nikolay_W, непонятно, что вам нужно. Вот небольшой пример многопоточной обработки голосования:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
using System;
using System.Collections.Generic;
using System.Threading;
 
namespace MultithreadingTest
{
    class Program
    {
        static void Main()
        {
            var pollint = new Polling();
            var r = new Random();
            var list = new List<Thread>();
            for (int i = 0; i < 10; i++)
            {
                Action action = r.Next()%2 == 0 ? (Action) pollint.Like : pollint.Dislike;
                var t = new Thread(() => action());
                t.Start();
                list.Add(t);
            }
            list.ForEach(x => x.Join());
            Console.WriteLine("Result: likes = {0}, dislikes = {1}", pollint.Likes, pollint.Dislikes);
            Console.ReadKey();
        }
    }
 
    class Polling
    {
        private int likes, dislikes;
 
        public int Likes { get { return likes; } }
        public int Dislikes { get { return dislikes; } }
        private readonly object likesSyncronize, dislikesSyncronise;
 
        public Polling()
        {
            likes = dislikes = 0;
            likesSyncronize = new object();
            dislikesSyncronise = new object();
        }
        
        public void Like()
        {
            lock (likesSyncronize)
            {
                likes++;
            }
        }
 
        public void Dislike()
        {
            lock (dislikesSyncronise)
            {
                dislikes++;
            }
        }
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
26.01.2013, 21:29
Помогаю со студенческими работами здесь

Выбор алгоритма защиты
Приветствую, кодеры. Сейчас: В сети на одном из ПК находится программа и папка с файлами (куда копируются файлы во время работы...

Выбор алгоритма сортировки строк!
Дан массив строк. Каждый элемент массива содержит одно слово. Отсортировать массив по алфавиту. Какой алгоритм будут наиболее оптимальным...

Задача коммивояжёра выбор алгоритма
Здравствуйте, подскажите алгоритм решения задачи коммивояжера, который программируется легче по сравнению с остальными.

Выбор оптимального алгоритма сортировки.
Характеристика массива:отсортирован в случайном порядке. Необходимо подобрать метод сортировки по возрастанию и обосновать выбор.

Выбор алгоритма для проверки символов строки на уникальность
Задача: проверить, уникальны ли все символы в строке. Написал два алгоритма static boolean check(String str) { char...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru