Библиотека классов постоянных потоков
Опишем, что нового появилось в объектной поддержке потоков
Borland, а затем поясним, как сделать объекты потоковыми.
Объекты, которые вы создаете при запуске приложения (окна,
диалоговые окна, наборы и т.д.) являются временными. Они строятся, используются и уничтожаются в ходе выполнения приложения.
Объекты могут появляться и уничтожаться при входе и выходе из их
области действия или при завершении программы. Сделав свои объекты, потоковыми, вы можете сохранить эти объекты в памяти или в
файловых потоках. Поэтому они являются постоянными.
Для постоянных потоков существует множество применений. При
сохранении в совместно используемой памяти они могут обеспечивать
коммуникации между процессами. Их можно передавать через модемы в
другие системы. Кроме того, объекты можно сохранить на диске с
помощью файловых потоков. Их можно считывать обратно и восстанавливать в том же приложении, в других экземплярах того же приложения или в других приложениях. Эффективное, содержательное и надежное использование потоков доступно для всех объектов.
Построить собственные потоковые классы достаточно просто и
не потребует особых издержек. Чтобы сделать класс потоковым, вам
нужно добавить специфические элементы данных, функции-элементы и
операции. Свой производный класс вы должны построить (прямо или
косвенно) ил TStreamableBase. Любой производный класс также является потоковым.
Чтобы упростить создание потоковых объектов, библиотека постоянных потоков содержит макрокоманды, добавляющие все подпрограммы, необходимые для того, чтобы сделать ваши классы потоковыми. Наиболее важными из них являются DECLARE_STREAMABLE и
IMPLEMENT_STREAMABLE. Эти макрокоманды добавляют программный код,
необходимый для того, чтобы сделать ваши объекты потоковыми.
Для облегчения их использования и расширения функциональных
возможностей объектов потоки в Borland C++ 4.0 существенно изменены. Эти изменения совместимы с существующим кодом ObjectWindows
и кодом Turbo Vision.
Новый потоковый код легче использовать, поскольку он предусматривает макрокоманды, освобождающие программиста от запоминания
большинства деталей, необходимых для создания потоковых классов.
Другие новые средства включают в себя поддержку множественного
наследования, отслеживание версий классов и лучшую изоляцию системы. Кроме того, потоковый код реорганизован так, чтобы облегчить написание библиотек, позволяющих не компоновать потоковый
код, если он не используется.
Потоки перенесены из библиотеки ObjectWindows в библиотеку
классов. Это облегчает применение потоков в приложениях, не использующих ObjectWindows.
Потоковые средства имеют несколько дополнений. Целью этих
изменений является обеспечение обратной совместимости, поэтому,
если вы компилируете работающее приложение с новым потоковым кодом, приложение сможет считывать потоки, записанные в старом коде. Однако запись потоков в старом формате не предусматривается.
В следующих разделах описываются изменения и новые возможности потоковых средств.