Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
| | | | |
Но лучше конечно забить на "многоздачный, коопедаративный" динозавр - 16-бит :-))) 05.06.01 17:00 Число просмотров: 703
Автор: kabanchik Статус: Незарегистрированный пользователь
|
|
<programming>
|
А есть ли аналог fork() в Win16 Application? 04.06.01 20:13
Автор: Xan Статус: Незарегистрированный пользователь
|
Собственно, нужно из основной программы создать еще один процесс и
заслать его в бэкграунд (но так чтобы он глобальную область переменных видел). Я читал, что в WinAPI32 это вроде функция
CreateProcess(...) делает. А вот в 16р не нашел чего-то...Может плохо искал.
|
|
А есть ли аналог fork() в Win16 Application? 04.06.01 20:48
Автор: kabanchik Статус: Незарегистрированный пользователь
|
> Собственно, нужно из основной программы создать еще один > процесс и > заслать его в бэкграунд (но так чтобы он глобальную область > переменных видел). Я читал, что в WinAPI32 это вроде > функция > CreateProcess(...) делает. А вот в 16р не нашел > чего-то...Может плохо искал.
для 16-битника - это WinExec, это я помню точно.
но навряд ли он разрешит разделять глобальные переменные, хотя для 16-бит это не проблема. для этой цели лучше объявить их в dll-ке. затем использовать маппинг.
но лучше, если тебе всего лишь нужен бакграунд работа, используй потоки, оды и переменные будут общими.
а подробнее узнай об этом в Help старых версиях С++
|
| |
А нету! 05.06.01 11:37
Автор: prop Статус: Незарегистрированный пользователь
|
> > Собственно, нужно из основной программы создать еще > один > > процесс и > > заслать его в бэкграунд (но так чтобы он глобальную > область > > переменных видел). Я читал, что в WinAPI32 это вроде > > функция > > CreateProcess(...) делает. А вот в 16р не нашел > > чего-то...Может плохо искал. > > для 16-битника - это WinExec, это я помню точно. > но навряд ли он разрешит разделять глобальные переменные, > хотя для 16-бит это не проблема. для этой цели лучше > объявить их в dll-ке. затем использовать маппинг. > но лучше, если тебе всего лишь нужен бакграунд работа, > используй потоки, оды и переменные будут общими. > а подробнее узнай об этом в Help старых версиях С++
Если я правильно помню, fork() порождает копию вызывающего процесса и начинает его выполнение со следующей за fork() команды.
В win16 используется корпоратиная многозадачность - нет ни процессов, ни потоков (в привычном смысле) - есть один процесс и один поток - все остальное - т. наз. задачи, которые получают сообщения, что-то делают, и возвращают управление. Не вернул управление - все остальные таски висят. С глобальными переменными проблем нет - global heap один на всю систему, поэтому указатель действителен во всех задачах.
А если маппинг это CreateFileMapping - то его в Win16 тоже нет.
Может я и наврал чего - давно это было...
|
| | |
А нету! 05.06.01 15:37
Автор: Xan Статус: Незарегистрированный пользователь
|
> > > Собственно, нужно из основной программы создать > еще > > один > > > процесс и > > > заслать его в бэкграунд (но так чтобы он > глобальную > > область > > > переменных видел). Я читал, что в WinAPI32 это > вроде > > > функция > > > CreateProcess(...) делает. А вот в 16р не нашел > > > чего-то...Может плохо искал. > > > > для 16-битника - это WinExec, это я помню точно. > > но навряд ли он разрешит разделять глобальные > переменные, > > хотя для 16-бит это не проблема. для этой цели лучше > > объявить их в dll-ке. затем использовать маппинг. > > но лучше, если тебе всего лишь нужен бакграунд работа, > > используй потоки, оды и переменные будут общими. > > а подробнее узнай об этом в Help старых версиях С++ > > Если я правильно помню, fork() порождает копию вызывающего > процесса и начинает его выполнение со следующей за fork() > команды. > В win16 используется корпоратиная многозадачность - нет ни > процессов, ни потоков (в привычном смысле) - есть один > процесс и один поток - все остальное - т. наз. задачи, > которые получают сообщения, что-то делают, и возвращают > управление. Не вернул управление - все остальные таски > висят. С глобальными переменными проблем нет - global heap > один на всю систему, поэтому указатель действителен во всех > задачах. > А если маппинг это CreateFileMapping - то его в Win16 тоже > нет. > Может я и наврал чего - давно это было...
Понял, спасибо всем. И все-таки глупый вопрос.
А если я прость из WinMain() создам дочернее окно с помощью CreateWindow ну например как инвизибл или с нулевыми размерами. Понятно что оно не есть копия процесса, но для моих целей пойдет??? ( будет невидимым и зрячим на global heap).
|
| | | |
<без заголовка> 05.06.01 16:20
Автор: XR <eXtremal Research> Статус: The Elderman
|
Понял, спасибо всем. И все-таки глупый вопрос.
> А если я прость из WinMain() создам дочернее окно с помощью > CreateWindow ну например как инвизибл или с нулевыми > размерами. Понятно что оно не есть копия процесса, но для > моих целей пойдет??? ( будет невидимым и зрячим на global > heap). Нет это из другой оперы.
Понятно что аналога fork() в Win16 нет ...есть WinExec(),
если хочешь поиметь совместный доступ к каким то переменным из многих
копий программы - сделай как рекомендовал kabanchik
а именно - создай DLL в которой обявлены все твои глобальные переменные а
потом экспортируй их. Потом загрузи DLL в своем exe и импортируй энти переменные ... подробности ищи в описании *.def файлов в хелпах для Win16
|
| | | | |
Но лучше конечно забить на "многоздачный, коопедаративный" динозавр - 16-бит :-))) 05.06.01 17:00
Автор: kabanchik Статус: Незарегистрированный пользователь
|
|
| | | | | |
Понимаешь, такой уж расклад в этот раз получился... 06.06.01 20:24
Автор: Xan Статус: Незарегистрированный пользователь
|
|
| | |
корпоратиная многозадачность ??? 05.06.01 15:02
Автор: - для корпоративных пользователей? :-))) Статус: Незарегистрированный пользователь
|
> > > Собственно, нужно из основной программы создать > еще > > один > > > процесс и > > > заслать его в бэкграунд (но так чтобы он > глобальную > > область > > > переменных видел). Я читал, что в WinAPI32 это > вроде > > > функция > > > CreateProcess(...) делает. А вот в 16р не нашел > > > чего-то...Может плохо искал. > > > > для 16-битника - это WinExec, это я помню точно. > > но навряд ли он разрешит разделять глобальные > переменные, > > хотя для 16-бит это не проблема. для этой цели лучше > > объявить их в dll-ке. затем использовать маппинг. > > но лучше, если тебе всего лишь нужен бакграунд работа, > > используй потоки, оды и переменные будут общими. > > а подробнее узнай об этом в Help старых версиях С++ > > Если я правильно помню, fork() порождает копию вызывающего > процесса и начинает его выполнение со следующей за fork() > команды. > В win16 используется корпоратиная многозадачность - нет ни > процессов, ни потоков (в привычном смысле) - есть один > процесс и один поток - все остальное - т. наз. задачи, > которые получают сообщения, что-то делают, и возвращают > управление. Не вернул управление - все остальные таски > висят. С глобальными переменными проблем нет - global heap > один на всю систему, поэтому указатель действителен во всех > задачах. > А если маппинг это CreateFileMapping - то его в Win16 тоже > нет. > Может я и наврал чего - давно это было...
|
| | | |
Это вероятно сильно развитая кооперативная многозадачность ... то есть когда кооператив "рога и копыта" вырастает до размеров корпорации "Золотой теленок" :))))) 05.06.01 15:18
Автор: XR <eXtremal Research> Статус: The Elderman
|
|
| | | | |
:P)))))) 05.06.01 16:36
Автор: prop Статус: Незарегистрированный пользователь
|
|
|
|