Статьи:: Функции С++ :: Описание функций C (Си) / C++ - setjmp
Описание функций C (Си) / C++ - setjmp
Описание функций C (Си) / C++ - setjmp
#include
int setjmp(env); jmp_buf env; переменная, в которой хранится окружение.
Описание.
Функция setjmp сохраняет состояние стека, который может быть последовательно восстановлен посредством использования функ- ции longjmp. Функции setjmp и longjmp обеспечивают возможность выполне- ния нелокального (nonlocal) перехода и обычно используются для передачи управления к обработке ошибок для восстановления кода в ранее вызванной процедуре (без использования обычного вызова), для возврата условных обозначений. Вызов setjmp активизирует сох- ранение текущего состояния стека в env. Последующий вызов longjmp восстанавливает сохраненное состояние и возвращает управление на указатель (точку входа), непосредственно следующий за соответст- вующим вызовом setjmp. Когда вызывается функция longjmp, значения всех переменных (за исключением переменных регистра) становятся доступными для процедуры, которая принимает управление и содержит значения этих переменных. Значения переменных регистра непредска- зуемы.
Возвращаемое значение.
После сохранения состояния стека функция setjmp возвращает значение 0. Если в результате вызова longjmp возвращается setjmp, тогда возвращается и значение value аргумента longjmp. Возвращае- мого значения в случае ошибки нет. См. также longjmp.
Замечание. После выполнения longjmp значения переменных ре- гистра в процедуре, вызывающей setjmp, не могут быть восстановле- ны (возвращены) к собственным значениям.
Пример:
#include #include
jmp_buf mark;
main() { if (setjmp(mark) != 0)
{ printf("longjmp has been calledn");
recover(); exit(1); } printf("setjmp has been calledn"); . . . p(); . . . }
p() {
int error = 0; . . . if (error != 0) longjmp(mark, -1); . . . }
recover() {
/* при выходе из программы убедитесь, что файлы данных не будут запорчены */
. . . }.
Вышел MySQL 5.1.30, первый стабильный рели....
После публикации 29 тестовых версий
анонсирован первый стабильный релиз
MySQL 5.1, пригодный для
промышленной эксплуатации и обеспечивающий увеличение производительности для
"тяжелых" SQL запросов, по сравнению с MySQL 5.0, примерно на 15-20%. Главные
новшества
появившиеся в MySQL 5.1:
Тестирование параллельных программ.
Тестирование параллельного программного обеспечения представляет собой более
сложную задачу по сравнению с тестированием последовательной программы. Программист
должен знать о подводных камнях при тестировании параллельного кода, имеющихся
методологиях и инструментарии.
Архитектура AMD64 (EM64T).
Аннотация. В статье кратко рассматривается архитектура AMD64 компании AMD и ее
реализация EM64T компании Intel. Описаны особенности архитектуры, ее возможности,
достоинства и недостатки.
Остальные статьи:
|