![]() |
![]() ![]() |
![]() |
Altair |
![]() ![]()
Сообщение
#1
|
![]() Ищущий истину ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 824 Пол: Мужской Реальное имя: Олег Репутация: ![]() ![]() ![]() |
Отвечаем
![]() ![]() Код {...... (код приведен специально без заголовка)} TYPE Item = POINTER TO RECORD time: LONGINT; thread, num: INTEGER; next: Item; ballast: ARRAY 100000 OF BYTE; END; CONST MaxItemsCount = 1000; VAR CriticalSection: WinApi.RTL_CRITICAL_SECTION; ItemListFront, ItemListBack: Item; items_count: INTEGER; t0: LONGINT; PROCEDURE Action(IpParameter: INTEGER): INTEGER; VAR x: Item; num: INTEGER; BEGIN num := 0; WHILE items_count < MaxItemsCount DO WinApi.EnterCriticalSection(CriticalSection); IF items_count < MaxItemsCount THEN NEW(x); IF x # NIL THEN INC(items_count); INC(num); x.time := WinApi.GetTickCount() - t0; x.thread := IpParameter; x.num := num; IF ItemListBack # NIL THEN ItemListBack.next := x END; ItemListBack := x; IF ItemListFront = NIL THEN ItemListFront := ItemListBack END END END; WinApi.LeaveCriticalSection(CriticalSection); WinApi.Sleep(100) END; WinApi.ExitThread(0); RETURN 0 END Action; PROCEDURE Main*; CONST N = 1000; VAR a, i: INTEGER; h: ARRAY N OF WinApi.HANDLE; t: ARRAY N OF INTEGER; x: Item; BEGIN items_count := 0; ItemListFront := NIL; ItemListBack := NIL; WinApi.InitializeCriticalSection(CriticalSection); t0 := WinApi.GetTickCount(); FOR i := 0 TO N-1 DO h[i] := WinApi.CreateThread(NIL, 0, Action, i+1, {}, t[i]) END; FOR i := 0 TO N-1 DO a := WinApi.WaitForSingleObject(h[i], WinApi.INFINITE) END; FOR i := 0 TO N-1 DO a := WinApi.CloseHandle(h[i]) END; WinApi.DeleteCriticalSection(CriticalSection); StdLog.Ln; StdLog.String('Items count = '); StdLog.Int(items_count); StdLog.Ln; x := ItemListFront; i := 1; WHILE x # NIL DO StdLog.Int(i); StdLog.String(")"); StdLog.Int(x.thread); StdLog.Int(x.num); StdLog.Int(x.time); StdLog.Ln; INC(i); x := x.next END; ItemListFront := NIL; ItemListBack := NIL; END Main; END TestThreads2. -------------------- Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С) |
SHnur |
![]()
Сообщение
#2
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 81 Пол: Мужской Реальное имя: Шурик Репутация: ![]() ![]() ![]() |
незнаю
помоему какой-то 32 битный -------------------- Двадцать пятый час в сутках может появиться всего лишь из-за небольшой ошибки в программе.
Чтобы не воспользоваться сумасшедшими возможностями, нужно быть идиотом. |
klem4 |
![]()
Сообщение
#3
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
BiTurboPascal :D :D :D
шутка. а я знаю :P :P -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
sandman |
![]()
Сообщение
#4
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 101 Пол: Мужской Репутация: ![]() ![]() ![]() |
Бейсик :D :D :D
-------------------- Плавают разными стилями, тонут-одним (ц) Кирпичи
|
volvo |
![]()
Сообщение
#5
|
Гость ![]() |
Очень похоже на BlueBottle... Не оно?
будем считать, что тоже угадал ![]() хотя это BlackBox :P Сообщение отредактировано: Oleg_Z - 11.04.2005 20:47 |
Altair |
![]()
Сообщение
#6
|
![]() Ищущий истину ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 824 Пол: Мужской Реальное имя: Олег Репутация: ![]() ![]() ![]() |
неа :P :D
(всем, включая скрытых :P ) -------------------- Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С) |
Void |
![]()
Сообщение
#7
|
Гость ![]() |
Oberon или Modula.
|
Altair |
![]()
Сообщение
#8
|
![]() Ищущий истину ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 824 Пол: Мужской Реальное имя: Олег Репутация: ![]() ![]() ![]() |
Void, Вы совершенно правы!
![]() Это Оберон. -------------------- Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С) |
![]() ![]() |
![]() |
Текстовая версия | 17.06.2025 22:51 |