Множество потоков, соревнующихся между собой за обладание единственным ресурсом

Целью этой серии тестов являлось сопоставление эффективности разных стратегий реализации функций управления очередями программки 10.4 с внедрением программки 10.5 (трехступенчатый сборочный поток) в качестве тестового приложения. Испытания производились на четырехпроцессорной (Intel Xeon, 1 ГГц) системе Windows 2000 Server с организацией 1, 2, 4, 8, 16, 32 и 64 потоков, но во всех 7 случаях каждого потока поручалось выполнение 1000 единиц работы. В безупречном Множество потоков, соревнующихся между собой за обладание единственным ресурсом случае можно было бы ждать линейного роста реального времени с повышением количества потоков, но соревновательность меж потоками за право владения единственным мьютексом (либо объектом CS) может приводить к нелинейному понижению этого показателя). Направьте внимание, что эти испытания не затрагивают файловую систему.

Использовались 6 разных стратегий реализации, результаты внедрения которых представлены в отдельных Множество потоков, соревнующихся между собой за обладание единственным ресурсом столбцах табл. В.5.

Таблица В.5. Производительность многопоточных реализаций на четырехпроцессорном сервере

К-во потоков Широковещат.модель Широковещат.модель Широковещат. модель Сигнальная модель Сигнальная модель Сигнальная модель
Mtx, Evt CritSec, Evt Mtx, Evt Mtx, Evt CritSec, Evt Mtx, Evt
Т/О 5мс Т/О 25мс SigObjWait Т/О неопределен Т/О неопределен Множество потоков, соревнующихся между собой за обладание единственным ресурсом SigObjWait
Реальное время 0,03 0,03 0,05 0,05 0,03 0,05
Пользовательское время 0,03 0,06 0,03 0,05 0,08 0,05
Системное время 0,06 0,02 0,09 0,08 0,02 0,06
Реальное время 0,14 0,27 0,09 0,08 0,06 0,08
Пользовательское время 0,13 0,05 0,14 0,17 0,11 0,08
Системное время 0,11 0,06 0,16 0,09 0,11 0,17
Реальное время 0,39 0,59 0,23 0,19 0,16 0,20
Пользовательское время 0,18 0,17 0,22 0,26 0,17 0,19
Системное время 0,30 0,22 0,41 0,31 0,22 0,31
Реальное время 0,83 0,92 0,73 0,36 0,34 0,36
Пользовательское время 0,34 0,36 0,55 0,52 0,45 0,45
Системное время 0,98 1,00 1,00 0,69 0,39 0,75
Реальное время 2,42 2,30 2,38 0,75 0,69 0,75
Пользовательское время 1,17 1,31 1,22 0,81 0,81 0,88
Системное время 3,69 3,05 3,39 1,45 1,08 1,33
Реальное время 7,56 7,50 7,98 1,50 1,50 1,50
Пользовательское время 3,33 3,73 2,56 1,75 1,69 1,78
Системное время 12,52 10,72 11,03 3,13 2,00 2,69
Реальное время 27,72 26,23 29,31 3,14 2,95 3,20
Пользовательское время 7,89 10,75 7,22 3,73 3,69 3,47
Системное время 46,70 40,33 36,67 6,28 3,89 5,47

В комментах, помещенных прямо за программкой 10.4, дискуссируются результаты и разъясняются достоинства разных реализаций, а тут мы только отметим Множество потоков, соревнующихся между собой за обладание единственным ресурсом, что результаты для сигнальной модели меняются пропорционально изменению количества потоков, тогда как в случае широковещательной модели, в особенности для вариантов с 32 и 64 потоками, это не так. Можно также созидать, что в случае широковещательной модели система потребляет значительную долю процессорного времени, ибо производятся, вычисляют предикат и производят незамедлительный возврат в состояние Множество потоков, соревнующихся между собой за обладание единственным ресурсом ожидания огромное количество потоков.

1. Широковещательная модель, мьютекс (Mtx), событие (Evt), раздельные вызовы функций освобождения и ожидания. Конечный период ожидания (Time-out, TO) устанавливался равным 5 миллисекундам, что являлось хорошим значением для 16-поточного варианта.

2. Широковещательная модель, объект CRITICAL_SECTION (CritSec), событие, раздельные вызовы функций освобождения и ожидания. Настраиваемый период ожидания устанавливался равным 5 миллисекундам Множество потоков, соревнующихся между собой за обладание единственным ресурсом, что являлось хорошим значением для 16-поточного варианта.

3. Широковещательная модель, мьютекс, событие, атомарный вызов SignalObjectAndWait (SigObjWait).

4. Сигнальная модель, мьютекс, событие, раздельные вызовы функций освобождения и ожидания.

5. Сигнальная модель, объект CRITICAL_SECTION, событие, раздельные вызовы функций освобождения и ожидания.

6. Сигнальная модель, мьютекс, событие, атомарный вызов SignalObjectAndWait.

Выполнение тестов

На Web-сайте Множество потоков, соревнующихся между собой за обладание единственным ресурсом книжки в каталоге TimeTest находятся пакетные файлы, при помощи которых вы можете запускать испытания как под управлением Windows 2000/NT, так и под управлением Windows 9x:

• cpTIME.bat

• cpTIME.bat

• atouTIME.bat

• grepTIME.bat

• sortTIME.bat

• threeST.bat

Для всех тестов, не считая тестов последней серии, текстовые ASCII-файлы огромного размера создавались при помощи Множество потоков, соревнующихся между собой за обладание единственным ресурсом программки RandFile.

Библиография

1. Beveridge, Jim, and Wiener, Robert. Multithreading Applications in Win32: The Complete Guide to Threads, Addison-Wesley, Reading, MA, 1997. ISBN: 0-201-44234-5.

2. Bott, Ed, and Siechert, Carl. Microsoft Windows Security Inside Out for Windows XP and Windows 2000, Microsoft Press, Redmond, WA, 2002. ISBN: 0-735-61632-9.

3. Box, Don. Essential COM, Addison-Wesley, Reading, MA Множество потоков, соревнующихся между собой за обладание единственным ресурсом, 1998. ISBN: 0-201-63446-5.

4. Box, Don (editor), et al. Effective COM: 50 Ways to Improve Your COM and MTS Based Applications, Addison-Wesley, Reading, MA, 1999. ISBN: 0-20-1-37968-6.

5. Brain, Marshall, and Reeves, Ron. Win32 System Services: The Heart of Windows 98 and Windows 2000, Third Edition, Prentice Hall, Englewood Cliffs, NJ, 2000. ISBN: 0-13-022557-6.

6. Butenhof, David. Programming with POSIX Threads, Addison Множество потоков, соревнующихся между собой за обладание единственным ресурсом-Wesley, Reading, MA, 1997. ISBN: 0-201-63392-2.

7. Cohen, Aaron, Woodring, Mike, and Petrusha, Ronald. Win32 Multithreaded Programming, О'Reilley & Associates, Sebastopol, CA, 1998. ISBN: 1-565-92296-4.

8. Comer, Douglas E., and Stevens, David L. Internetworking with TCP/IP, Volume III: Client-Server Programming and Applications, Windows Sockets Version, Prentice Hall, Upper Saddle River, NJ Множество потоков, соревнующихся между собой за обладание единственным ресурсом, 1997. ISBN: 0-13-848714-6.

9. Custer, Helen. Inside Windows NT, Microsoft Press, Redmond, WA, 1993. ISBN: 155615-481-X. Second edition by David Solomon replaces this book, which in turn is replaced by Solomon and Russinovich (both in this bibliography).

10. Custer, Helen. Inside the Windows NT File System, Microsoft Press, Redmond, WA, 1994. ISBN: 155615-660-X.

11. Department of Defense Множество потоков, соревнующихся между собой за обладание единственным ресурсом. U.S. Department of Defense Trusted Computer System Evaluation Criteria, formerly known as DoD Trusted Computer System Evaluation Criteria , DoD 5200.28-STD, DoD Computer Security Center, 1985. Available at http://www.radium.ncsc.mil/tpep/library/rainbow.

12. Donahoo, Michael, and Calvert, Kenneth. TCP/IP Sockets in C: Practical Guide for Programmers, Morgan Множество потоков, соревнующихся между собой за обладание единственным ресурсом Kaufmann, San Francisco, CA, 2000. ISBN: 1-55860-826-5.

13. Eddon, G., and Eddon, D. Inside Distributed COM, Microsoft Press, Redmond, WA, 1998. ISBN: 1-57231-849-X.

14. Feuer, Alan. MFC Programming, Addison-Wesley, Reading, MA, 1997. ISBN: 0-201-63358-2.

15. Gilly, Daniel, and the staff of O'Reilly & Associates, Inc. UNIX in a Nutshell, O'Reilly & Associates, Inc., Sebastopol Множество потоков, соревнующихся между собой за обладание единственным ресурсом, CA, 1992. ISBN: 1-56592-001-5.

16. Hennessy, John L., and Patterson, David A. Computer Architecture: A Quantitative Approach, Third Edition, Morgan Kaufmann, San Francisco, CA, 2003. ISBN: 1-55860-596-7.

17. Hipson, Peter D. Expert Guide to Windows NT 4 Registry, Sybex, 1999. ISBN: 0-7821-1983-2.

18. Josutis, Nicolai M. The C++ Standard Library: A Tutorial and Reference, Addison-Wesley, Reading, MA, 1999. ISBN Множество потоков, соревнующихся между собой за обладание единственным ресурсом: 0-20-137926-0.

19. Kano, Nadine. Developing International Applications for Windows 95 and Windows NT, Microsoft Press, Redmond, WA, 1995. ISBN: 1-55615-840-8.

20. Kernighan, Brian W., and Ritchie, Dennis M. The С Programming Language, Second Edition , Prentice-Hall, Englewood Cliffs, NJ, 1988. ISBN: 0-13-110370-9.

21. Miller, Kevin. Professional NT Services, WROX, Indianapolis, IN, 1998. ISBN: 1-86100-130-4.

22. Naik, Dilip. Inside Windows Storage — Server Storage Technologies for Множество потоков, соревнующихся между собой за обладание единственным ресурсом Windows 2000, Windows Serve r2003, and Beyond, Addison-Wesley, Boston, MA, 2003. ISBN: 0-321-12698-X.

23. Nottingham, Jason P., Makofsky, Steven, and Tucker, Andrew. SAMS Teach Yourself Windows CE Programming in 24 Hours, SAMS, Indianapolis, IN, 1999. ISBN: 0-6723-1658-7.

24. Oney, Walter. Programming the Microsoft Windows Driver Model, Second Edition , Microsoft Press, Redmond, WA, 2002. ISBN: 0-735-61803-8.

25. Petzold Множество потоков, соревнующихся между собой за обладание единственным ресурсом, Charles. Programming Windows, Fifth Edition, Microsoft Press, Redmond, WA, 1998. ISBN: 1-572-31995-X.

26. Pham, Thuan, and Garg, Pankaj. Multithreaded Programming with Win32, Prentice-Hall, Englewood Cliffs, NJ, 1998. ISBN: 0-130-10912-6.

27. Plauger, P.J. The Standard С Library, Prentice-Hall, Englewood Cliffs, NJ, 1992. ISBN: 0-13-131509-9.

28. Quinn, Bob, and Shute, Dave. Windows Sockets Network Множество потоков, соревнующихся между собой за обладание единственным ресурсом Programming, Addison-Wesley, Reading, MA, 1996. ISBN: 0-201-63372-8.

29. Raymond, Eric S. The Art of UNIX Programming, Addison-Wesley, Boston, MA, 2003. ISBN: 0-131-42901-9.

30. Rector, Brent, and Newcomer, Joseph M. Win 32 Programming, Addison-Wesley, Reading, MA, 1997. ISBN: 0-201-63492-9.

31. Richter, Jeffrey. Programming Applications for Microsoft Windows (formerly Advanced Windows NT: The Developer's Guide to the Win32 Application Множество потоков, соревнующихся между собой за обладание единственным ресурсом Programming Interface in previous editions), Microsoft Press, Redmond, WA, 1999. ISBN: 1-57-231996-8.

32. Richter, Jeffrey, and Clark, Jason. Programming Server-Side Applications for Microsoft Windows 2000, Microsoft Press, Redmond, WA, 2000. ISBN: 0-73-560753-2.

33. Robbins, Kay A., and Robbins, Steven. Practical UNIX Programming: A Guide to Concurrency, Communication, and Multithreading, Prentice-Hall, Englewood Cliffs Множество потоков, соревнующихся между собой за обладание единственным ресурсом, NJ, 1995. ISBN: 0-13-443706-3.

34. Sedgewick, Robert. Algorithms in C, Addison-Wesley, Reading, MA, 1990. ISBN: 0201-51425-7.

35. Silberschatz, Abraham, Gagne, Greg, and Galvin, Peter B. Operating System Concepts, Sixth Edition, Wiley Textbooks, Hoboken, NJ, 2002. ISBN: 0-471-25060-0.

36. Sinha, Alok K. Network Programming in Windows NT, Addison-Wesley, Reading, MA, 1996. ISBN: 0-201-59056-5.

37. Solomon, David. Inside Windows NT, Second Множество потоков, соревнующихся между собой за обладание единственным ресурсом Edition, Microsoft Press, Redmond, WA, 1998. ISBN: 1-57-231677-2.

38. Solomon, David, and Russinovich, Mark. Inside Windows 2000, Microsoft Press, Redmond, WA, 2000. ISBN: 1-73-561021-5.

39. Standish, Thomas A. Data Structures, Algorithms and Software Principles in C, Addison-Wesley, Reading, MA, 1995. ISBN: 0-201-59118-9.

40. Stevens, W. Richard. Advanced Programming in the UNIX Environment, Addison-Wesley, Reading, MA, 1992. ISBN: 0-201-56317-7.

41. Stevens, W. Richard Множество потоков, соревнующихся между собой за обладание единственным ресурсом. TCP/IP Illustrated, Volume3: TCP for Transactions, HTTP, NNTP, and the UNIX Domain Protocols, Addison-Wesley, Reading, MA, 1996. ISBN:0-201-63495-3.

42. Stevens, W. Richard. UNIX Network Programming — Networking APIs: Sockets and XTI, Volume I, Prentice-Hall, Upper Saddle River, NJ, 1998. ISBN: 0-13-490012-X.

43. Sutton, Stephen A. Windows NT Security Guide Множество потоков, соревнующихся между собой за обладание единственным ресурсом, Addison-Wesley, Reading, MA, 1997. ISBN: 0-201-41969-6.

44. Triebel, Walter A. Itanium Architecture for Software Developers, Intel Press, 2000. ISBN: 0-970-28464-0.

45. Unicode Consortium, The. The Unicode Standard, Version 2.0, Addison-Wesley, Reading, MA, 1996. ISBN: 0-201-48345-9.

46. Weiss, Mark Allen. Data Structures and Algorithm Analysis in C, Addison-Wesley, Reading, MA, 1993. ISBN: 0-8053-5440-9.

47. Williams, Robert, and Walla, Mark. The Ultimate Windows Server Множество потоков, соревнующихся между собой за обладание единственным ресурсом 2003 System Administrator's Guide, Addison-Wesley, Boston, MA, 2003. ISBN: 0-201-79106-4.

48. Керниган, Брайан, Ритчи, Деннис, Язык программирования Си, "Невский Диалект", 2000.

49. Реймонд, Эрик, Искусство программирования для UNIX, Издательский дом "Вильямс", 2005.

Спасибо, что скачали книжку в бесплатной электрической библиотеке Royallib.ru

Бросить отзыв о книжке

Все книжки создателя


[1]В приложении А показано, как исключить Множество потоков, соревнующихся между собой за обладание единственным ресурсом ненадобные определения для ускорения компиляции и экономии дискового места.

[2]Обратите внимание на то, что логика цикла находится в зависимости от принятого в эталоне ANSI С порядка вычисления логических операций "и" (&&) и "либо" (||) в направлении слева вправо.

[3]Символ подчеркивания (_) показывает на то, что данная функция либо ключевое слово предоставляются компилятором Microsoft Множество потоков, соревнующихся между собой за обладание единственным ресурсом С, тогда как буковкы t и Т указывают на то, что данная функция создана для работы с обобщенными знаками, имеющими расширенную форму. Подобные способности предлагаются и другими средами разработки приложений, хотя применяемые в их имена функций и ключевики могут отличаться от приведенных выше.

[4]В согласовании со сложившейся практикой для Множество потоков, соревнующихся между собой за обладание единственным ресурсом обозначения длинноватых указателей на характеристики, выставленные строчками знаков, употребляется префикс l.

[5]Во время написания данной книжки даже дешевые системы на базе лэптопов оснащались жесткими дисками емкостью 40 Гбайт и поболее, и потому даже в случае малых систем средства для работы с файлами, размеры которых превосходят 4 Гбайт, является не только лишь предпочтительными Множество потоков, соревнующихся между собой за обладание единственным ресурсом, да и необходимыми.

[6]Сравнение функций SetFilePointer и GetCurrentDirectory показывает непоследовательность стиля программирования Windows. В неких случаях для передачи входных и выходных значений используются только характеристики.

[7]Вместе с тем, рассчитывать на 100-наносекундную точность не следует; точность измерения времени может быть различной зависимо от черт оборудования.

[8]Гораздо более комфортным и Множество потоков, соревнующихся между собой за обладание единственным ресурсом поочередным было бы внедрение для управления реестром дескрипторов типа HANDLE. Есть также и другие ничем не оправданные отличия от принятой в Windows практики.

[9]Заметьте, что суффикс "Ех" следует использовать либо опускать в четком согласовании с приведенными именами функций. Функция, в заглавии которой находится этот суффикс, является расширением функции Множество потоков, соревнующихся между собой за обладание единственным ресурсом, в заглавии которой этот суффикс отсутствует.

[10]Возможно, это дело вкуса, — или личного, или корпоративного, — но многие программеры никогда не пользуются оператором goto и избегают потребления оператора break, не считая случаев его совместного использования с операторами switch и время от времени — в циклах, также совместного использования с операторами continue. Те, кто Множество потоков, соревнующихся между собой за обладание единственным ресурсом мыслит трезво, не торопятся определять свою позицию тут. Обработчики окончания и исключений могут решать многие из числа тех задач, для решения которых вам хотелось бы привлечь оператор goto и операторы, снабженные метками.

[11]Этот оператор является специфичным для компилятора Microsoft С и предоставляет действенный метод выхода из блока try…finally без Множество потоков, соревнующихся между собой за обладание единственным ресурсом аварийного окончания выполнения.

[12]Цены на модули памяти повсевременно понижаются, а "обычный" объем доступной памяти возрастает, потому именовать, какой конкретно объем памяти является обычным, достаточно проблемно. Во время написания данной книжки дешевые системы снабжались памятью объемом 128-256 Мбайт. Почти всегда таковой памяти будет полностью довольно, но она не является хорошей Множество потоков, соревнующихся между собой за обладание единственным ресурсом для Windows XP. Для систем Windows Server 2003 требуемый объем памяти обычно еще больше обозначенного.

[13]Понятие потоков вводится в главе 7.

[14]Обычно для сотворения объектов типа X употребляются системные вызовы CreateX. Функция HeapCreate является исключением из этого правила.

[15]Утверждение относительно согласованности отображенных представлений файлов, видимых различными процессами, неприменимо к сетевым файлам. Файлы Множество потоков, соревнующихся между собой за обладание единственным ресурсом должны быть локальными.

[16]В главе 10 рассказывается о косвенном способе, позволяющем одному сгустку возбуждать исключения в другом, при этом эта же методика применима и к потокам, принадлежащим различным процессам.

[17]Рабочий набор — это набор страничек виртуального адресного места, которые ОС считает нужным загрузить в память, до того как Множество потоков, соревнующихся между собой за обладание единственным ресурсом пробовать запустить хоть какой из потоков процесса. Данная тема освещается в большинстве руководств по ОС.

[18]Как разъясняется в последующей главе, мьютексы — это объекты синхронизации, обладателями которых могут быть потоки.

[19]Использование в этом случае контрольной суммы, вычисляемой в итоге внедрения операции исключающего "либо" к битам сообщения, носит только иллюстративный нрав. Существует огромное Множество потоков, соревнующихся между собой за обладание единственным ресурсом количество других, более совершенных методик проверки целостности данных, которые и должны употребляться в промышленных приложениях.

[20]Выбирая нужный тип объекта, руководствуйтесь последующим правилом: если упоминавшиеся ограничения применимы — используйте объекты CRITICAL_SECTION, если же есть некоторое количество процессов либо требуются способности мьютексов — применяйте мьютексы.

[21]Как показано в главе 10, в упражнении с семафором Множество потоков, соревнующихся между собой за обладание единственным ресурсом (упражнение 10.11), системные службы Windows предоставляют возможность организации взаимодействия меж процессами также средством отображаемых файлов. Дополнительные механизмы IPC включают файлы, сокеты, удаленные вызовы процедур, СОМ и отправку сообщений через почтовые ящики. Сокеты рассматриваются в главе 12.

[22]Это утверждение нуждается в дополнительных разъяснениях. Для большинства сетевых приложений и высокоуровневых протоколов (http, ftp Множество потоков, соревнующихся между собой за обладание единственным ресурсом и т.д.) более желаемым является интерфейс Windows Sockets API, в особенности в тех случаях, когда требуется обеспечить межплатформенное взаимодействие с системами, хорошими от Windows, на базе протокола TCP/IP. Многие разработчики предпочитают ограничивать внедрение именованных каналов только вариантами IPC в границах обособленной системы либо в сетях Множество потоков, соревнующихся между собой за обладание единственным ресурсом Windows.

[23]Заметьте, что функция TransactNamedPipe не только лишь предлагает более удачный метод использования пары функций WriteFile и ReadFile, да и обеспечивает определенные достоинства в плане производительности. Один из тестов показал увеличение пропускной возможности канала в интервале от 57% (маленькие сообщения) до 24% (большие сообщения).

[24]Эта терминология может несколько сбивать с толку Множество потоков, соревнующихся между собой за обладание единственным ресурсом, так как системы Windows предоставляют бессчетные услуги, которые не относятся к услугам, оказываемым службами Windows Services. Но внедрение в протяжении всей этой книжки термина "Windows" в тех местах, где имеется в виду API, кое-кем также может восприниматься разносторонне.

[25]Если служба вызывает функцию MessageBox, то в качестве типа окна сообщения следует Множество потоков, соревнующихся между собой за обладание единственным ресурсом указать MB_SERVICE_NOTIFICATION. Тогда сообщения будут отображаться на активном десктопе, даже если ни один из юзеров еще не успел войти в систему на данном компьютере.

[26]В будущем, благодаря развитию платформы Win64 и предоставлению огромных объемов физической памяти, острота этой задачи, по всей видимости, снизится.

[27]Точнее говоря, "UNIX" значит Множество потоков, соревнующихся между собой за обладание единственным ресурсом функции эталона POSIX, описанные в спецификации The Single UNIX Specification (http://www.opengroup.org/onlinepubs/007908799/). Эта спецификация реализуется в UNIX и Linux. В свою очередь, исторически эта спецификация появилась на базе UNIX.


moda-dlya-krasnih-shlyap-kak-protest-protiv-stareniya.html
moda-kak-sredstvo-virazheniya-individualnosti-i-indikator-gruppovoj-prinadlezhnosti.html
moda-na-retro-znaete-li-vi-chto-takoe-ceremoniya-usinovleniya-zubrenka-nedavno-ya-pobival-na-takom-meropriyatii.html