На базарной площади довольно часто можно слышать высказывания об
Обероне. Мне кажется, что на базарной площади пора появиться ветке об
этой системе и языке, что-то вроде "Мысли об Обероне". Что это такое, перспективы
этой системы, что
полезного можно извлечь из него для программирования на Дельфи
(например) и др.
Ivan
Всего в теме 4531 сообщение
Ссылки по теме "Оберон" и "Компонентный паскаль"
Отслеживать это обсуждение
- Free Pascal, Oberon, BlackBox
- Разработка препроцессора gpre для delphi\freepascal.
- Component Pascal и среда разработки BlackBox
- FreePascal: реальная альтернатива или OpenSource — блажь?
№ 1821 19-01-2005 07:49 | |
Ответ на »сообщение 1819« ()
___________________________
Ответ на »сообщение 1818« (O.Nick)
___________________________
Прелесть! Может лучше сразу Активный Оберон установить? :о)
AOS или WinAOS?
-AOS не ставиться :(
С CD работает, а из раздела нет (сплошные трапы).
-WinAOS довольно жалкое зрелище.
№ 1820 19-01-2005 07:48 | |
Ответ на »сообщение 1817« (Ирина)
___________________________
>>>Если сборщик мусора сканирует только один стек, то как его можно самостоятельно удалить в других?
Так дело не в том, чтобы удалить, а чтобы сохранить. ;-)
Ответ на »сообщение 1818« (O.Nick)
___________________________
>>> Если BlackBox не расчитан на многопоточность то почему у него все время минимум две нити болтаются?
Одна - сугубо для того, чтоб Ctrl-Break отлавливать.
№ 1819 19-01-2005 06:55 | |
Ответ на »сообщение 1818« (O.Nick)
___________________________
з.ы. в принципе теперь доступны исходники, может кто и прикрутит многопоточность.
На уровне среды поддержки исполнения spin-lock-и вводить, исключительные секции кода... Прелесть! Может лучше сразу Активный Оберон установить? :о) Сообщение не подписано
№ 1818 19-01-2005 06:45 | |
Ответ на »сообщение 1816« (Trurl)
___________________________
Если BlackBox не расчитан на многопоточность то почему у него все время минимум две нити болтаются?
з.ы. в принципе теперь доступны исходники, может кто и прикрутит многопоточность.
№ 1817 19-01-2005 02:25 | |
Есть приложение, в котором некоторый объект должен мигать. Достигается это с помощью WinApi.Sleep(1000) последующим вызовом функции Views.Update(..). Однако при нажатии кнопки мышки и до ее отжатия объекты перестают мигать. Как от этого избавиться?
To Trurl
Если сборщик мусора сканирует только один стек, то как его можно самостоятельно удалить в других?
№ 1816 17-01-2005 05:20 | |
№ 1815 17-01-2005 02:28 | |
Как в ЧЯ отловить сообщение о закрытии окна, выполняющего программу?
№ 1814 13-01-2005 17:00 | |
№ 1813 13-01-2005 16:11 | |
Ответ на »сообщение 1812« (Trurl)
___________________________
С графикой такая же ситуация?
№ 1812 10-01-2005 17:45 | |
Ответ на »сообщение 1811« (Ирина)
___________________________
Главная проблема - не рассчитан BlackBox на многопоточность. Вызовы StdLog легко могут заблокировать оконную подсистему.
MODULE Test4;
IMPORT WinApi, SYSTEM, Log:=StdLog;
CONST MAX_TIMES = 1000;
VAR
HANDLE: ARRAY 2 OF WinApi.HANDLE;
ThreadId: ARRAY 2 OF INTEGER;
CriticalSection: WinApi.RTL_CRITICAL_SECTION;
Index: INTEGER;
Times: ARRAY MAX_TIMES OF INTEGER;
TaskNo: ARRAY MAX_TIMES OF INTEGER;
PROCEDURE FirstThread(IpParameter: INTEGER): INTEGER;
VAR fDone: BOOLEAN;
BEGIN
fDone:=FALSE;
WHILE ~fDone DO
WinApi.EnterCriticalSection(CriticalSection);
IF Index >= MAX_TIMES THEN
fDone:=TRUE;
ELSE
Times[Index]:=WinApi.GetTickCount();
TaskNo[Index]:=1;
INC(Index);
END;
WinApi.LeaveCriticalSection(CriticalSection);
WinApi.Sleep(0);
END;
WinApi.ExitThread(0);
RETURN 0;
END FirstThread;
PROCEDURE SecondThread(IpParameter: INTEGER): INTEGER;
VAR fDone: BOOLEAN;
BEGIN
fDone:=FALSE;
WHILE ~fDone DO
WinApi.EnterCriticalSection(CriticalSection);
IF Index >= MAX_TIMES THEN
fDone:=TRUE;
ELSE
Times[Index]:=WinApi.GetTickCount();
TaskNo[Index]:=2;
INC(Index);
END;
WinApi.LeaveCriticalSection(CriticalSection);
WinApi.Sleep(0);
END;
WinApi.ExitThread(0);
RETURN 0;
END SecondThread;
PROCEDURE Main1*;
VAR a,i: INTEGER;
BEGIN
Index:=0;
WinApi.InitializeCriticalSection(CriticalSection);
HANDLE[0]:=WinApi.CreateThread(NIL, 0, FirstThread, 0, , ThreadId[0]);
HANDLE[1]:=WinApi.CreateThread(NIL, 0, SecondThread, 0, ,ThreadId[1]);
a:=WinApi.WaitForMultipleObjects(2, HANDLE[0], 1, WinApi.INFINITE);
a:=WinApi.CloseHandle(HANDLE[0]);
a:=WinApi.CloseHandle(HANDLE[1]);
WinApi.DeleteCriticalSection(CriticalSection);
Log.String('Tsk Time'); Log.Ln;
FOR i:= 1 TO Index-1 DO
Log.Int(TaskNo[i]);
Log.Int(Times[i]);
Log.Ln;
END;
END Main1;
END Test4.
Отслеживать это обсуждение
Дополнительная навигация: |
|