Linux — многопоточное приложение в последовательности загрузки — C ++ / Debian

У меня эта неясная проблема с 2 дня: я создал приложение запуска при загрузке в C ++ в системе Debian, которая работала безупречно, пока я не интегрировал некоторые многопоточные элементы.

  • Есть только 2 темы (1 основная и 1 дочерняя)
  • Я включил -lpthread и -pthread в make-файл
  • Я пробовал оба метода /.config/autostart и файл .desktop (то же самое
    результат)
  • Программа запустилась с sudo
  • Там нет ошибки / сбой в любом месте, основной поток работает нормально, но
    дочерний поток выполняет только одну итерацию, а затем останавливается
  • даже попытался добавить сон в последовательность загрузки lxsession
  • Если я запускаю ту же командную строку, что и в файле автозапуска в терминале (sudo или нет), он работает отлично.

Прошло 2 дня, а у меня просто нет КЛЕЯ!
Если кто-то испытал это раньше или может найти какую-то логику в этом, я буду всегда благодарен.

0

Решение

Мне кажется, что у вас просто есть … Жук в твоей новой логике. Вы допустили ошибку при разработке логики многопоточности, так что дочерний поток выполняет только одну итерацию. (Или, гораздо более вероятно, киосков в бесконечном ожидании. Ожидание события, о котором никогда не сообщается, семафора, который никогда не поднимается, очереди, которая иссякает и никогда не заполняется, и т. Д.)

Мы можем помочь вам в дальнейшем, если вы публикуете выдержки из рассматриваемого кода … только иллюстрирующие как дочерний поток запускается и как он взаимодействует с родительским. (Условные переменные, семафоры и т. Д., Вероятно, в этом суть вашей ошибки.)

Я бы предположил, что «все остальное не имеет значения». Вам не нужен «сон в загрузочной последовательности» (если последовательность ожидает завершения вашей программы, а также если нужно). Я полагаю, что мне кажется, что у вас просто есть … ошибка в вашем новом коде, который вводит многопоточность.

И вы можете подумать о том, является ли многопоточность выгодной, учитывая, что у вас была не поточная версия того же самого, которая работала правильно. Если обработка, которая должна быть выполнена, использовалась (успешно) одним потоком, такая обработка может или не может быть обработана более выгодно «п потоки.» Должен Вы находите и исправляете эту ошибку, или это так же хорошо, чтобы отказаться от изменений и вернуться к тому, что сработало? Только вы можете решить, что …

1

Другие решения

Спасибо всем за ваши предложения.

Я нашел «исправить»: запуск программы запуска в терминале (‘@lxterminal -e URL / к / программа &‘в автозапуск lxsession) вместо фона, кажется, исправить это Там нет графического интерфейса, хотя … это сервис.

Многопоточная логика здесь не виновата, не мой первый выстрел, и я действительно хочу сохранить эту функцию (@Mike Robinson).

Я также пересмотрю использование sudo, как это было предложено, что кажется схематичным, учитывая все обстоятельства. Это может заставить его работать в фоновом режиме. спасибо @ datenwolf.

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector