TransactionScope и многопоточность

Вы называете атрибуты / свойства как функции?

До сих пор я думаю, что вы имели в виду переменные .

Если вы хотите получить доступ к таким свойствам, как passport_expire или residency, то вы можете попробовать как

$user = App\User::find(1);
foreach  (array_keys($documents) as $document) {
    $documents[$document] = $user->{$document};
}

Приведенный выше код обновит массив $documents со значениями [ 114] свойства объекта.

Но, если вы хотите выполнить как функции , как вы упомянули, вам нужно попробовать call_user_func или call_user_func_array

42
задан TheCodeJunkie 23 March 2009 в 14:15
поделиться

2 ответа

См. MSDN:

Необходимо также использовать класс TransactionScope и DependentTransaction для приложений, которые требуют использования той же транзакции через несколько вызовов функции или несколько вызовов потока.

Поэтому, возможно, изучите DependentTransaction - в частности, существует пример рабочего потока, здесь.

29
ответ дан Marc Gravell 26 November 2019 в 23:57
поделиться

Это корректно: TransactionScope класс использует Transaction.Current свойство, которое хранит его значение в поле, которое отмечено с ThreadStatic атрибут.

ThreadStatic атрибут удостоверяется, что значение поля получает привязку потока, т.е. это имеет уникальное значение в каждом потоке. Это - рекомендуемый подход для совместного использования даты в потоке. Это также известно как Локальная память потока (TLS).

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

18
ответ дан Michael Damatov 26 November 2019 в 23:57
поделиться
Другие вопросы по тегам:

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