Надлежащий способ получить доступ к совместно используемому ресурсу в агентах Scala

Вы могли рассмотреть php открывающий тэг php-только для файлов как своего рода строка хижины (как #!/bin/bash), таким образом, Вам не нужен закрывающий тэг.

Мы следуем стандарту ZF также, никакому закрывающему тэгу php-только для файлов. Но я никогда не слышал ни о каком инструменте, который не мог проанализировать файл из-за недостающего закрывающего тэга, и я не вошел ни в какие проблемы на данный момент для того, чтобы не использовать его.

10
задан davetron5000 29 October 2009 в 17:31
поделиться

2 ответа

Способ действий участников - это не совместное использование ресурсов. Обеспечьте весь доступ к одному Актеру, чья работа состоит в том, чтобы иметь дело с доступом к совместно используемому ресурсу.

Таким образом, сам ресурс не разделяется между потоками. Актер.

0
ответ дан 4 December 2019 в 04:36
поделиться

Это может быть плохой стиль, но один из способов - смешать императивный и функциональный стили, попросив вашего актера (для которого требуются соединения) подключить пул соединений напрямую и использовать синхронизацию для получения Подключение . Честно говоря, я действительно не вижу, что не так в этом подходе; Я предпочитаю его !! или !? , который просто кричит deadlock (или даже livelock )!

Я предполагаю, что еще один способ - отправить сообщение в ваш пул, в котором описывается работа, которая должна быть выполнена с подключением, и возможная цель для результата:

class DbWork(f: Connection => Unit)
class DbWorkWithResult[T](f:Connection => T, target: OutputChannel[Any])

И затем вы можете использовать его так:

pool ! new DbWork( { (conn: Connection) => //do something 
                 })

Или:

pool ! new DbWorkWithResult[Int]( (conn: Connection) => //return int
                 }, self)
2
ответ дан 4 December 2019 в 04:36
поделиться
Другие вопросы по тегам:

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