GCC Атомарный Builtins вместо pthread?

Возвращаемое значение для main должно указать как программа, из которой выходят. Нормальный выход обычно представлен 0 возвращаемыми значениями от main. Аварийный выход обычно сообщается ненулевым возвратом, но нет никакого стандарта для того, как интерпретируются ненулевые коды. Также, как отмечено другими, void main() явно запрещается стандартом C++ и не должен использоваться. Допустимый C++ main подписи:

int main()

и

int main(int argc, char* argv[])

, который эквивалентен [1 113]

int main(int argc, char** argv)

, также стоит отметить, что в C++, int main() может быть оставлен без оператора возврата, в которой точке это принимает значение по умолчанию к возврату 0. Это также верно с программой C99. Должен ли return 0; быть опущен или не открыт для дебатов. Диапазон действительной программы C основные подписи намного больше.

кроме того, эффективность не является проблемой с эти main функция. Это может только быть введено и оставлено однажды (маркировка запуска и завершения программы) согласно стандарту C++. Для C случай отличается, и повторно вводящий main() позволяется, но должен избежаться.

7
задан 21 July 2009 в 09:29
поделиться

4 ответа

Это хорошая идея?

Нет, если вы когда-нибудь собирались компилировать код с что-то кроме gcc. Вызывает ли pthreads какие-то особые проблемы?

5
ответ дан 7 December 2019 в 05:26
поделиться

Если вы уже используете pthread, а функции блокировки pthread уже делают то, что вы хотите, лучше всего использовать функции блокировки pthread.

Эти встроенные атомарные встроенные функции являются просто строительными блоками для примитивов более высокого уровня; написание этих примитивов более высокого уровня, как правило, непросто, и любые ошибки могут вызвать ошибки, на выявление которых может уйти много времени (поскольку они обычно зависят от времени). Если у вас уже есть библиотека с примитивами более высокого уровня, которые делают то, что вы хотите, и достаточно быстрые для ваших нужд (и не предполагайте, что они слишком медленные только потому, что вам нужно выполнить вызов функции), лучше не изобретать заново колесо.

2
ответ дан 7 December 2019 в 05:26
поделиться

Нет. Встроенные модули GCC, вероятно, имеют смысл для тех, кто пишет операционные системы, libc и, возможно, сам pthreads, но для вашего обычного приложения нет причин не использовать подход pthreads.

И даже если вы всегда используете GCC , когда-нибудь вы можете захотеть запустить инструмент статического анализа, который не будет обрабатывать все клиентские расширения GCC.

1
ответ дан 7 December 2019 в 05:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: