Что вы порекомендуете сделать для буферизации нескольких потоков (для каждого потока потребуется собственный буфер) в C?
Я вроде собрал в голове решение:
Это теоретический «псевдокод»
[ptr, ptr, ptr, ptr ... ]
Каждый ptr
является указателем на структуру:
{
stream_id
buff_ptr
}
stream_id
- это идентификатор потока (у меня есть эта информация), а buff_ptr
- это указатель на некоторые malloc
ed данные. Кроме того, буферы, вероятно, должны быть гибкими, и им придется часто вызывать malloc
и free
, чтобы сделать их гибкими (по крайней мере, я думаю, что это так?
Я бы в основном нашел нужный буфер, перебирая массив ptr
s.
Итак, эта «архитектура» хороша или есть лучшая?
Если кто-то задается вопросом: "Зачем это няню?" Я сделал сервер на Ruby / EventMachine, протокол действительно прогнил (мягко говоря), и я не знаю, как еще с ним справиться ... Если нет способа заставить EventMachine буферизовать его для меня, это я полагаю, это было бы лучшим решением.
Спасибо.
P.S: Простите за рейв! ~
stream_id
было целым числом от0
доN
, вы могли бы использовать массивbuff_ptr
и не искать в спискеstruct
, чтобы найти требуемый поток. - person hmjd   schedule 18.02.2012stream_id
? Если бы он был, вы могли бы использовать разреженный массив. - person hmjd   schedule 18.02.2012