Это моя первая попытка потоковой передачи в C. Я создаю круговой буфер. Я знаю, как создать нить, но все примеры, которые я видел только у резьбовых функций, которые принимают один параметр недействительного, но, к сожалению спецификация моего работника требует от меня, чтобы использовать три, как показано здесь:Передача нескольких аргументов в поточную функцию из pthread_create
void bufferRead(BoundedBuffer* buffer, char* data, int count) {
pthread_mutex_lock(&buffer->mutexBuffer);
<snip>
pthread_mutex_unlock(&buffer->mutexBuffer);
}
Вот мой pthread_create заявление
pthread_create(&buffer.readThread, NULL, (void *)bufferRead, &readParams)
И мои readParams структура/присвоений
struct readThreadParams {
BoundedBuffer b;
char* data;
int count;
};
struct readThreadParams readParams;
readParams.b = buffer2;
readParams.data = out_array;
readParams.count = in_size;
Любые советы о том, как назначить каждому из параметров структуры после перехода к Ь Функция ufferRead будет с благодарностью оценена.
-1 перенос локальной переменной в другой поток –
Если это локальная переменная в main, это не проблема. Если вы выходите из main, ваша программа в любом случае завершается, поэтому переменная всегда существует, пока ваша программа запущена. – jcoder
@jcoder Выход из 'main' не означает немедленного завершения программы. А автоматическая (не куча, нестатическая) переменная для межпоточной связи в лучшем случае является сомнительной. –