TLDR: Я использую переменную типа void * для хранения указателя строки, как мне изменить значение строки?
ФОН
Домашнее задание с МПК возникло.
У меня есть два процесса: шеф-повара и официанты, в которых официанты дают некоторый вклад шеф-поварам (сидячие места, заказы за столом, готовые к оплате и т. Д.), А затем шеф-повар отправляет информацию соответствующему официанту (очевидно, что не все официанты обслуживать все столы одновременно).
Мое (по общему признанию, неуклюжее) решение:
1. Chef открывает FIFO-файл ‘chef’ для чтения
2. Официант открывает «шеф-повар», чтобы написать и записывает имя официанта, и открывает FIFO с этим именем для чтения.
3. Шеф-повар читает имя официанта и открывает FIFO для записи.
3.a. (На самом деле не имеет отношения к проблеме, с которой я сталкиваюсь). Официант отправляет информацию через ‘chef’, пока повар не закроет систему.
4. Во время ввода данных официантами иногда шеф-повар должен будет отправить информацию обратно. Когда шеф-повар вводит выходные данные, происходит проверка, чтобы определить, в какой выходной FIFO записывать.
ВОПРОС
У меня есть две темы, и мне нужно отправить строку обратно. Я передал указатель строки в качестве одного параметра, который мне дан (в данном случае он называется void * arg), затем, когда мне нужно отправить некоторую информацию обратно, я пытаюсь просто вставить строку в указатель, который я передал но до сих пор не нашел, чтобы сделать это. Итак, мой вопрос, как я могу сделать это таким образом?
Я закончил, используя следующее:
string* temp = static_cast<string*>(arg);
Затем модифицируется только измененный темп. Так как arg удерживает расположение строки в главном потоке, temp берет его, и тогда я могу поместить строку в temp. Таким образом, была установлена связь между потоками, и я смог продолжить реализацию своего ужасного дизайна.
Других решений пока нет …