Олег Цилюрик - QNX/UNIX: Анатомия параллелизма
- Название:QNX/UNIX: Анатомия параллелизма
- Автор:
- Жанр:
- Издательство:Символ-Плюс
- Год:2006
- Город:Санкт-Петербург
- ISBN:5-93286-088-Х
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Олег Цилюрик - QNX/UNIX: Анатомия параллелизма краткое содержание
Книга адресована программистам, работающим в самых разнообразных ОС UNIX. Авторы предлагают шире взглянуть на возможности параллельной организации вычислительного процесса в традиционном программировании. Особый акцент делается на потоках (threads), а именно на тех возможностях и сложностях, которые были привнесены в технику параллельных вычислений этой относительно новой парадигмой программирования. На примерах реальных кодов показываются приемы и преимущества параллельной организации вычислительного процесса. Некоторые из результатов испытаний тестовых примеров будут большим сюрпризом даже для самых бывалых программистов. Тем не менее излагаемые техники вполне доступны и начинающим программистам: для изучения материала требуется базовое знание языка программирования C/C++ и некоторое понимание «устройства» современных многозадачных ОС UNIX.
В качестве «испытательной площадки» для тестовых фрагментов выбрана ОСРВ QNX, что позволило с единой точки зрения взглянуть как на специфические механизмы микроядерной архитектуры QNX, так и на универсальные механизмы POSIX. В этом качестве книга может быть интересна и тем, кто не использует (и не планирует никогда использовать) ОС QNX: программистам в Linux, FreeBSD, NetBSD, Solaris и других традиционных ОС UNIX.
QNX/UNIX: Анатомия параллелизма - читать онлайн бесплатно ознакомительный отрывок
Интервал:
Закладка:
0x5003, "второй тестовый клиент для менеджера ресурсов",
0x5004, "третий тестовый клиент для менеджера ресурсов",
0x50ff, "четвертый тестовый клиент для менеджера ресурсов"
/* диапазон, выделенный Группе # 2: от 0x5100 до 0x51ff */
/* диапазон, выделенный Группе # 3: от 0x5200 до 0x52ff */
};
char Anonymous[] = "чуждый процесс";
int ALLNUM_MYPROC = sizeof(IdLabel) /
sizeof(IdLabel[0]);
Код процесса-клиента
Как было сказано, клиент открывает файл (функция open()
), после чего использует MsgSend()
, отсылая сообщения и получая ответы.
#include
#include
#include
#include
#include
#include
#include
#include "/home/ZZZ/TESTS/MR/MessTest.h"
int main() {
int fdRM; // Дескриптор соединения с менеджером ресурсов
char BufferSend[MESSIZE_MAX], BufferReply[MESSIZE_MAX];
setlocale(LC_CTYPE, "C-TRADITIONAL");
if (fdRM = open(strcat(strcpy(BufferSend, NET_REG),
"/dev/MESSTEST/RM"), O_RDWR)) == -1)) {
printf("Клиент не нашел имени менеджера!\n");
fflush(stdout);
return(-1);
}
/* Заполнение заголовка - первых 4-х байт сообщения, содержащего
инвентаризационную метку данного процесса (описаны в "IRL32.h") */
((int *)(BufferSend))[0] = 0x5002;
/* Заполнение сообщения */
strcpy(BufferSend + 4, "Так вот ты какой, Менеджер Ресурсов!");
if (MsgSend(fdRM, BufferSend, 100, BufferReply, 100) == -1)
printf("Клиенту не удалось передать сообщение\n");
else
printf("Клиент передал сообщение и получил
Интервал:
Закладка: