DOS-multithreads

11 отговора 788 прегледа
#1

DOS-multithreads

Ezika C ima li nqkakvi f-ii za suzdavane na ni6ki nazavisimi ot OS.
Naprimer pod DOS v za6titen rejim da pi6a mnogo-ni6kovi programi.

ne6to kato API _beginthred i _endthred

Отговор
в отговор на stefak #2

Ц

Нишките са ОС-зависими. ДОС не поддържа нишки. Даже и много процеси не поддържа пряко - прави се с прихващане на прекъсване от таймера. Под Windows 9x ( това всъщност е ДОС ) има някаква жалка имитация на нишки, но нещата вървят зле с тях.
Иначе за UNIX-подобните ОС е fork.


System Doctor Error:
Your girlfriend is pregnant.
(A)bort, (M)arry, (I)gnore?_
Отговор
в отговор на Colombino #3

Re: Ц

В отговор на:

Иначе за UNIX-подобните ОС е fork.




fork() създава нов процес. За нишки -- POSIX threads. Има ги от много време и вървят на доста юникси и линукс.

--
Екстремно програмиране на български.
[линк]
Отговор
в отговор на Дeшeв #4

Re: Ц

kakvo e POSIX threads ?
molq obqsnete ?

Отговор
в отговор на stefak #5

Re: Ц

Този сайт ми даде линка:

[линк]

Там има и други полезни ресурси .

--
Екстремно програмиране на български.
[линк]
Отговор
в отговор на Colombino #6

айде още един специалист по windows

за разлика от много UNIX-и където няма нишки даже и в windows-95 има както нишки, така и паралелно вървящи процеси.
верно в 9х има проблеми, щото голяма част от това отдолу не е реентрантно...

fork няма нищо общо с нишките, пуска ти нов процес.

Отговор
в отговор на ~!@$%^amp;*()_+ #7

Re: айде още един специалист по windows

Не съм специалист по Win, по-скоро съм на ниво advanced. Специалист съм по C/C++ ( в това число STL ), алгоритми, структури от данни и няколко специфични неща с които съм се сблъсквал.
За fork вече казаха, не виждам защо го повтаряш. Грешката ми е очевидна и няма нужда от повече коментар. Нормално е да съм ги позабравил тия неща от 3 курс - 6 години са минали от тогава. Иначе Линукс не ме радва и нито веднъж не съм се изкушил ( по-точно не ми е хрумвало ) да си го инсталирам у нас. Не съм и работил на него.
Да, има нишки в 9x, но не струват. Виждал съм код с нишки, който на NT- тата си работи напълно прилично, а на 9x товари яко процесора. Вече не помня какво беше, но тогава правих яко замервания и установих, че нишките на 9x са си емулация.
А за паралелните процеси си има брадат виц: "Чакай да си форматирам дискетата".
Но признавам, че те си работят напълно приемливо и 9x е прилична ОС, стига да не забиваше толкова. Подозирам, че ако не програмирах даже и нямаше да забива кой знае колко. Само лийковете на ресурси щяха да са ми проблем, но пък на съвременна машина рестарт на 9x става за няколко секунди. Виж, това че пускам майка ми на компа със сигурнос не ми позволява да избера друго освен NT. Аз лично предпочитам 2К - хем е по-семпло ( което ми допада ), хем не се прави на прекалено умно. С това съм у нас.


System Doctor Error:
Your girlfriend is pregnant.
(A)bort, (M)arry, (I)gnore?_

Редактирано от Colombino на

Отговор
в отговор на Colombino #8

извинявай за повторението

просто го казах, след като прочетох какво си отговорил
dir.bg е прекалено бавен за да изчитем всичко преди да отговоря на конкретно изказване.

за дискетата си е виновен лежащия отдолу дос, а линукс не съм го споменавал изобщо.

би ли обяснил какво разбираш под "нишките са емулация" то винаги когато паралелно джитканите неща са повече от броя на процесорите, са си емулация

Отговор
в отговор на stefak #9

Re: DOS-multithreads

намери кода на една "eye candy" програма наречена Acidwarp - върви под дос и си емулира отдолу нишки с таймера. Много е стара (поне 15 години) така че линк не мога да ти предложа, сори

Отговор
в отговор на Colombino #10

Въх

Абе вярно това с кода, дето бачка под XP, а под 9x се влачи... Преди време бях писал едно програмче за енкодване на .mp3 директно от микрофонния вход на звуковата карата, което беше multithread ed. На XP вървеше като пушка, а на 98 енкодващия тред получаваше процесора веднъж на полвин час... мислех, че съм оплескал нещо с приоритетите, въртях го суках го кви ли не неща не пробвах (включително и downgrade на DirectX...) и не можах да го оправя... При това на някои машини с 98 работи, а на други не. И все още ми е пълна мистерия...

Отговор
в отговор на Zmei #11

Re: Въх

Scheduler-a на Win2000/XP доста по-различен от този на Win95/98. Така че сравнението не е "честно". Тредовете са си "леки процеси" и в двата случая и нищо не се емулира. Под 95 се влачи и поради друга причина, че отдолу стои DOS. Всъщност тои е нереентрантната част и създава проблеми, не Win частта. Почти сигурен съм че програмата ти може да се направи така че да работи сностно под 95, но ще иска доста промени.

Отговор
в отговор на stefak #12

Re: DOS-multithreads

не мисля че езика има значение за тредовете, бил той С, С++ или Y

DOS, противно на името си, не е операционна система. по-скоро е нещо в класа "файлов монитор", с който понякога може да изкопираш файл от едно място на друго. в WIN9х нещата просто стават по-красиво, макар че има известен напредък в посока ОС (сега ще почне едно плюене...)

та по тази причина DOS не само не може да поддържа тредове, той не поддържа дори идея за процеси. тук-таме се забелязват някакви проблясъщи за процеси и ре-ентрантност (примерно в .sys "драйверите"), но всичко прилича на курсова работа.

младежите вече се изказаха, че в DOS/vm86 нямало нишки. не знам. и, в същност, не ме интересува. но е ясно, че поддръжка на процеси и/или тредове от DOS-"kernel" няма да получиш. трябва сам да си ги напишеш

и за да има смисъл от моя пост, преди почти 20 години имаше една фамилия компилатори и среда, която работеше под DOS (3.30). Всичко беше под името "TopSpeed", създадено от Jensen & Partners International. не знам дали има вече живи хора, които да си спомнят този продукт.

та продукта имаше компилатори на модула, паскал, С/С++, разбира се асемблер и всички груги глезотии, като визуален дебъгер. ценното беше, че всички библиотеки бяха на сорс.

за всички езици имаше библиотека за тредове. не процеси! ползваше се много лесно и работеше много стабилно. но работеше само за extra-large модел на паметта (ох, какви понятия имаше едно време... small, medium...) та там имаше не само beginthred и endthred, но и stop, wake, setpriority, доколкото помня. беше много отдавна...

потърси нещо на тая тема. ако ти е интересно, мисля че имам една лента от онова време на което трябва да има копие на дискетите (бяха 70-тина 360кБ дскети), но нямам идея дали ще се прочте...

Отговор