Библиотека C по сравнению с WinApi

Предложения для вашего раздела my.cnf или my.ini [mysqld]

max_connections=50  # from 1024 until you NEED more connections

P.S. max_used_connections было 3.

Для дополнительных предложений просмотрите мой профиль, Сетевой профиль для контактной информации.

12
задан Joao Vilaca 12 January 2009 в 00:09
поделиться

7 ответов

Нет ничего волшебного о библиотеке C. Это - просто стандартизированный API для доступа к общему обслуживанию от ОС. Это означает, что реализовано сверху ОС, использование API обеспечило ОС.

Используйте, какой бы ни имеет смысл в Вашей ситуации. Библиотека C является портативной, Win32 не. С другой стороны, Win32 часто более гибок, и выставляет больше функциональности.

17
ответ дан 2 December 2019 в 04:53
поделиться

Функции не действительно эквивалентны за исключением некоторых простых вещей как ZeroMemory.

GlobalAlloc, например, дает Вам память, но он использовался для передачи общей памяти под win16 также. Части этой функциональности все еще существуют.

WriteFile не только запишет в файлы, но в (среди других) именованные каналы также. Что-то fwrite или запись не может непосредственно сделать.

Я сказал бы, что использование c библиотечные функции, если возможный и используют функции окон, только если Вам нужна дополнительная функциональность или если Вы получаете повышение производительности.

Это сделает портирование на другие платформы легче позже.

4
ответ дан 2 December 2019 в 04:53
поделиться

Функции C вызовут winapi функции, или действительно ли это наоборот?

Функции C (которые реализованы в библиотеке непривилегированного режима) вызывают функции WINAPI (которые реализованы в ядре O/S).

3
ответ дан 2 December 2019 в 04:53
поделиться

Это - вероятно, больше информации, чем Вы ищете (и возможно не точно, что Вы спросили), но Catch22.net имеет статью, наделенную правом "Методы на сокращение Исполняемого размера", который может помочь указать на различия в вызовах API Win32 и c вызовах во время выполнения.

4
ответ дан 2 December 2019 в 04:53
поделиться

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

Конечно, это означает, собираетесь ли Вы только программировать для платформ Windows, затем просто используют функции Windows и не используют функции стандартной библиотеки для C того же типа.

В конце просто необходимо остаться согласовывающимися с выбором, и Вы будете в порядке.

2
ответ дан 2 December 2019 в 04:53
поделиться

C функции назовет систему API, Стандартным Временем выполнения C Библиотека (или CRT) является API, используемый для стандартизации среди систем.

Внутренне, каждый проектирования системы его собственный API непосредственно с помощью системных вызовов или драйверов. Если у Вас есть коммерческая версия Visual C++, это раньше обеспечивало исходный код CRT, это - интересное чтение.

1
ответ дан 2 December 2019 в 04:53
поделиться

Несколько дополнительных точек на некоторых примерах:

FillMemory, ZeroMemory

Ни они, ни функции C не системные вызовы, таким образом, или можно было бы быть реализован сверху другого, или у них могли даже быть различные реализации, прибывающие из общего источника или нет.

GlobalAlloc

С тех пор malloc () создается сверху примитивов операционной системы, выставленных ее API, было бы интересно знать, сосуществуют ли malloc () и прямое использование таких средств выделения счастливо без проблем. Я мог бы вообразить некоторых причин, почему malloc мог бы тихо предположить, что "куча", к которой он получает доступ, непрерывна, даже если я назвал бы это ошибкой дизайна, даже если бы он был зарегистрирован, если дополнительная стоимость для безопасности не была весьма значительной.

1
ответ дан 2 December 2019 в 04:53
поделиться