Общая память по сравнению с канальной связью Движения

Что-то, что я заметил - в представлении INFORMATION_SCHEMA.COLUMNS, CHARACTER_MAXIMUM_LENGTH, дает размер 2147483647 (2^31-1) для типов поля, таких как изображение и текст. ntext 2^30-1 (быть двухбайтовым unicode и всеми).

Этот размер включен в вывод от этого запроса, но это недопустимо для этих типов данных в операторе CREATE (у них не должно быть максимального значения размера вообще). Таким образом, если результаты этого вручную не исправлены, СОЗДАТЬ сценарий не будет работать, учитывая эти типы данных.

я предполагаю, что возможно зафиксировать сценарий для составления этого, но это вне моих возможностей SQL.

21
задан 7hi4g0 2 October 2013 в 06:56
поделиться

3 ответа

Одной из первых вещей, о которой я подумал, когда я прочитал это, был Stackless Python. Каналы в Go напоминают мне партию Stackless Python, но это, вероятно, потому, что (а) я использовал его и (б) язык / мысли, которые они на самом деле пришли от меня никогда не трогал.

Я никогда не пытался использовать каналы как IPC, но это, вероятно, потому, что альтернатива, вероятно, намного безопаснее. Вот какой-то псевдокод:

program1

chan = channel()
ipc = IPCManager(chan, None)
send_to_other_app(ipc.underlying_method)

chan.send("Ahoy!")

program2

chan = channel()
recv_from_other_app(underlying_method)
ipc = IPCManager(chan, underlying_method)

ahoy = chan.recv()

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

Однако я согласен;

7
ответ дан 29 November 2019 в 22:08
поделиться

Роб сказал, что они много думают о том, как заставить каналы работать как (сетевой) прозрачный RPC, на данный момент это не работает, но, очевидно, они хотят найти время, чтобы получить это right .

А пока вы можете использовать пакет gob , который, хотя и не является идеальным и цельным решением, уже работает достаточно хорошо.

3
ответ дан 29 November 2019 в 22:08
поделиться

Я попытался сделать аналогичную вещь для обертывания библиотеки MPI. Сейчас я думаю использовать что-то вроде

func SendHandler(comm Comm){
    // Look for sends to a process
    for {
        i := <-comm.To;
        comm.Send(i,dest);  
    }
}
func ReceiveHandler(comm Comm){
    // Look for recieves from a process
    // Ping the handler to read out
    for {
        _ = <-comm.From;
        i := comm.Recv(source);
        comm.From <- i;
     }
}

, где comm.Send и comm.Recv обертывают коммуникационную библиотеку переменного тока. Я не уверен, как вы настраиваете канал для двух разных программ, у меня нет опыта в подобном.

2
ответ дан 29 November 2019 в 22:08
поделиться
Другие вопросы по тегам:

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