хочу сделать простые publisher/consumers с pthread.
publisher thread:
```
std::string line;
...
if (std::getline(dictionary, line)) {
std::unique_ptr<std::string> ptr = std::make_unique<std::string>(line);
while (lfqueue_enq(my_queue, (void*)&ptr) == -1) {...
```
consumer thread:
```
std::unique_ptr<std::string>* word_ptr;
while ( (word_ptr = (std::unique_ptr<std::string>*)lfqueue_deq(my_queue)) == NULL) {...}
std::string* word = word_ptr->get(); <--- EXC_BAD_ACCESS
```
пробовал и std::unique_ptr<char[]>, что я делаю не так?
А зачем поинтеры? Просто строки не катят?
А, дак lfqueue не работает с unique_ptr
ptr в publisher'е умирает просто
если библиотеку нельзя заменить, то придётся сырые указатели гонять: lkqueue_enq(my_queue, new std::string(std::move(line)), на приёмнике соответственно забирать std::string* и не забывать про delete
Зачем pthread если есть <thread>?
а я хз, что первое нагуглил
Не надо тогда использовать
гляну тогда, если будет просто перетащусь
о, эта работает, спасибо!
Обсуждают сегодня