Лучше всего распараллеливая пример очереди / [закрытая] лучшая практика

Я вижу, что это старый пост, но я нашел его полезным и подумал, что поделился бы решением, аналогичным тому, что предложил @kzqai:

У меня есть функция, которая получает два параметра, такие как ...

function getTableInfo($inTableName, $inColumnName) {
    ....
}

Внутри я проверяю массивы, которые я установил, чтобы убедиться, что доступны только таблицы и столбцы с «блаженными» таблицами:

$allowed_tables_array = array('tblTheTable');
$allowed_columns_array['tblTheTable'] = array('the_col_to_check');

Затем проверка PHP перед работающий PDO выглядит как ...

if(in_array($inTableName, $allowed_tables_array) && in_array($inColumnName,$allowed_columns_array[$inTableName]))
{
    $sql = "SELECT $inColumnName AS columnInfo
            FROM $inTableName";
    $stmt = $pdo->prepare($sql); 
    $stmt->execute();
    $result = $stmt->fetchAll(PDO::FETCH_ASSOC);
}
34
задан leora 6 December 2008 в 13:32
поделиться

5 ответов

Вы могли также:

9
ответ дан VonC 11 October 2019 в 07:03
поделиться

Выезд Поточная обработка в C#, Joseph Albahari, очень полной ссылкой о многопоточности. В частности, он покрывает очереди производителя/потребителя .

33
ответ дан Mauricio Scheffer 11 October 2019 в 07:03
поделиться

Можно попробовать это решение. Это показывает Вам, как реализовать шаблон производителя-потребителя. Имеет также некоторое объяснение на том, что может быть сделано с ним. Как различные комбинации числа производителей и потребителей.

http://devpinoy.org/blogs/jakelite/archive/2009/01/12/threading-patterns-the-producer-consumer-pattern.aspx

http://devpinoy.org/blogs/jakelite/archive/2009/02/03/threading-patterns-producer-consumer-pattern-examples.aspx

0
ответ дан jake.stateresa 11 October 2019 в 07:03
поделиться

Это - интересная статья о ThreadPools:

http://www.codeproject.com/KB/threads/smartthreadpool.aspx

Для более простых вариантов использования Вы могли также использовать собственный класс ThreadPool.Net.

5
ответ дан Dirk Vollmar 11 October 2019 в 07:03
поделиться

Одно из моих любимых решений этой проблемы подобно producer/consumer шаблон.

я создаю основной поток (в значительной степени моя программа Main()), который содержит блокирующийся объект очереди.

Этот основной поток отделяет несколько рабочих потоков, какие простые поп-вещи от центрального блокирования распараллеливают и обрабатывают их. Так как это - ориентированная на многопотоковое исполнение очередь блокирования, биты синхронизации легки - эти TaskQueue.Dequeue(), вызов заблокируется, пока задача не ставится в очередь потоком производителя / основным потоком.

можно динамично управлять числом рабочих, Вы хотите или фиксируете его согласно переменной конфигурации - так как они все просто выталкивают вещи от очереди, число рабочих не добавляет сложности.

В моем случае, у меня есть сервис, который обрабатывает несколько различных типов tasks. Мне ввели очередь для обработки чего-то универсального как TaskQueueTask. Тогда я разделяю это на подклассы и переопределяю Execute() метод.

<час>

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

1
ответ дан Sergio 11 October 2019 в 07:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: