На главную

On-line справка по Win32 API

Написать письмо
БЕСПЛАТНАЯ ежедневная online лотерея! Выигрывай каждый день БЕСПЛАТНО!
Список всех статей A-B-C-D-E-F-G-H-I-J-K-L-M-N-O-P-Q-R-S-T-U-V-W-X-Y-Z | Скачать Вниз

When to Use Multitasking



There are two ways to implement multitasking: as a single process with multiple threads or as multiple processes, each with one or more threads. An application can put each thread that requires a private address space and private resources into its own process, to protect it from the activities of other process threads.

A multithreaded process can manage mutually exclusive tasks with threads, such as providing a user interface and performing background calculations. Creating a multithreaded process can also be a convenient way to structure a program that performs several similar or identical tasks concurrently. For example, a named pipe server can create a thread for each client process that attaches to the pipe. This thread manages the communication between the server and the client. Your process could use multiple threads to accomplish the following tasks:

· Manage input for multiple windows.
· Manage input from several communications devices.
· Distinguish tasks of varying priority. For example, a high-priority thread manages time-critical tasks, and a low-priority thread performs other tasks.
· Allow the user interface to remain responsive, while allocating time to background tasks.



It is typically more efficient for an application to implement multitasking by creating a single, multithreaded process, rather than creating multiple processes, for the following reasons:

· The system can perform a context switch more quickly for threads than processes, because a process has more overhead than a thread does (the process context is larger than the thread context).
· All threads of a process share the same address space and can access the process's global variables, which can simplify communication between threads.
· All threads of a process can share open handles to resources, such as files and pipes.



The Win32 API also provides alternative methods that can be used in the place of multithreading. The most significant of these methods are asynchronous input and output (I/O) and the ability to wait for multiple events.
A single thread can initiate multiple time-consuming I/O requests that can run concurrently using asynchronous I/O. Asynchronous I/O can be performed on files, pipes, and serial communication devices. For more information, see Synchronization and Overlapped Input and Output.

A single thread can block its own execution while waiting for any one or all of several events to occur. This is more efficient than using multiple threads, each waiting for a single event, and more efficient than using a single thread that consumes processor time by continually checking for events to occur. For more information, see Wait Functions.


Пригласи друзей и счет твоего мобильника всегда будет положительным!
Предыдущая статья
 
Сайт Народ.Ру Интернет
Следующая статья
Пригласи друзей и счет твоего мобильника всегда будет положительным!

Когда, чтобы Использовать Multitasking



Есть два пути осуществлять multitasking: как единственный процесс со многочисленной резьбой или как многочисленные процессы, каждый с одной или более резьбой. Приложение может поместить каждую резьбу, которая требует частное пространство адреса и частных ресурсов в свой собственный процесс, чтобы защищать это из деятельности другой резьбы процесса.

multithreaded Процесс может управлять взаимно исключительными задачами с резьбой, как например, обеспечение интерфейса пользавателя и вычисления фона выполнения. Создание multithreaded процесса может также быть удобным путем в структуре программа, которая выполняет несколько аналогичные или идентичные задачи параллельно. Например, поименованный сервер трубы может создать резьбу для каждого процесса клиента, который подключает к трубе. Эта резьба управляет связи между сервером и клиент. Ваш процесс мог бы использовать многочисленную резьбу, чтобы выполнять следующие задачи:

Управлять вводом для многочисленного окна.
Управлять вводом с нескольких устройств связи.
Различать задачи, изменяющие приоритет. Например, высокоприоритетная резьба управляет время-критическими задачами, и низкоприоритетная резьба выполняет другие задачи.
Позволять интерфейс пользавателя, чтобы оставаться отзывчивым, пока распределяющее время в задачи фона.



Это обычно более эффективное для приложения, чтобы осуществлять multitasking создавая единственный, multithreaded процесс, а не создавая кратное обрабатывает, для следующего причин:

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



Win32 API Также обеспечивает альтернативные методы, которые могут быть использованы на месте multithreading. Наиболее значимый этих методов - асинхронный ввод и выход (В/В) и способность ждать многочисленные события.
Единственная резьба может ввести многочисленный трудоемкий В/В запрашивается, что может запустить параллельно используя асинхронный В/В. Асинхронный В/В мочь быть выполнен в файлах, трубах, и последовательных устройствах связи. Более подробно, смотри Синхронизацию и Перекрывшую Ввод и Выход.

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


Вверх Version 1.3, Oct 26 2010 © 2007, 2010, mrhx Вверх
 mrhx software  Русский перевод OpenGL  Русский перевод Win32 API
 
Используются технологии uCoz