|
Виж темите без отговор | Виж активните теми
Дата и час: Вто Юли 28, 2026 12:12 am
Писане на multithreaded applications
| Автор |
Съобщение |
|
Цецо
Ранг: Форумен бог
Регистриран на: Пон Сеп 27, 2004 9:22 am Мнения: 15501 Местоположение: София
|
_________________ "Да еба и шибаната държава" мислеше си Гошо, докато се опитваше да улучи кофата за боклук от балкона на осмия етаж.
|
| Сря Юни 03, 2009 3:52 pm |
|
 |
|
tgi
Ранг: Форумен бог
Регистриран на: Нед Юни 10, 2007 2:22 pm Мнения: 6492 Местоположение: София
|
Не е от хормоните, от главата е...
smtp, само защото на тебе ти е трудно да схванеш нещо не значи, че и с всички
останали е така.
Ако искаш да ни впечатлиш с това, колко те бива, покажи какво си направил.
_________________------------------- www.tgi-sci.com------------------- http://www.flickr.com/photos/didi_tgi/
|
| Сря Юни 03, 2009 4:42 pm |
|
 |
|
zaphod
Ранг: Форумен бог
Регистриран на: Нед Юли 24, 2005 10:28 am Мнения: 2658
|
хех, току що един колега изрева че в МТ плугина му ренди на точици, а със сигурност има повече опит от доста хора тука.
въобще, който си мисли че МТ програмирането е лесно е ламер.
|
| Сря Юни 03, 2009 6:32 pm |
|
 |
|
tgi
Ранг: Форумен бог
Регистриран на: Нед Юни 10, 2007 2:22 pm Мнения: 6492 Местоположение: София
|
Ако става дума за програмиране под MS боза, може и трудно да е, знам ли.
По-скоро ми изглежда невъзможно като гледам колко им е бавна реакцията дори
на user-ски действия. Ама те открай време наричат с познати имена на работещи
неща боклуците си, които са докарани колкото да излъжат средностатистическата
публика, че работят.
Въобще някой да ми говори за multi-task, multi-thread или както там избере
да нарече многозадачност за един или повече процесори от гледна точка на MS
е все едно да ми говори за формула-1 познавайки само валяка като нещо на колела...
_________________------------------- www.tgi-sci.com------------------- http://www.flickr.com/photos/didi_tgi/
|
| Сря Юни 03, 2009 7:07 pm |
|
 |
|
zaphod
Ранг: Форумен бог
Регистриран на: Нед Юли 24, 2005 10:28 am Мнения: 2658
|
тги, ептен ламерски се изказа. 
|
| Сря Юни 03, 2009 7:31 pm |
|
 |
|
tgi
Ранг: Форумен бог
Регистриран на: Нед Юни 10, 2007 2:22 pm Мнения: 6492 Местоположение: София
|
Щом ти казваш. Сега остава и да обясниш защо.
_________________------------------- www.tgi-sci.com------------------- http://www.flickr.com/photos/didi_tgi/
|
| Сря Юни 03, 2009 7:54 pm |
|
 |
|
tgi
Ранг: Форумен бог
Регистриран на: Нед Юни 10, 2007 2:22 pm Мнения: 6492 Местоположение: София
|
[Edit] Обяснението със същината на multithreading-а при Intel само говори в полза
на примера ми с валяка. Наистина в тежка и смотана CISC архитектура отпреди 25+
години винаги има място за вкарване на паралелни действия, но то е именно защото
архитектурата е тромава. По-добре е с multithreading наистина, но и с него, и без
него е безнадеждно тромава архитектура сравнена например с power [/edit]
_________________------------------- www.tgi-sci.com------------------- http://www.flickr.com/photos/didi_tgi/
|
| Сря Юни 03, 2009 8:05 pm |
|
 |
|
RM
Ранг: Почетен член
Регистриран на: Нед Окт 19, 2008 7:26 pm Мнения: 673
|
Нищо не разбрах .... ама човека е дал пример , и ба му мамата бачка, въпреки природните закони  ???
 |  |  |  | Код: //--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop
#include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma link "BMThread" #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::SynchroEvent1 ( TObject *Sender ) { Label2->Caption = Value1; } //--------------------------------------------------------------------------- void __fastcall TForm1::SynchroEvent2 ( TBMThread * Sender, TBMExecuteThread *Thread, void *&Data ) { TLabel *Label = (TLabel *)Data; Label->Caption = Value2; } //--------------------------------------------------------------------------- void __fastcall TForm1::BMThread1Execute( TObject *Sender, TBMExecuteThread *Thread, void *&Data) { Value1 = 0; for ( int i = 0; i < 1000; i ++ ) { Thread->PercentProgress = i / 10; SleepEx ( 20, false ); if ( Thread->Terminated ) break;
Value1 ++; Thread->Synchronize ( &SynchroEvent1 ); } } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { BMThread1->Start (); } //--------------------------------------------------------------------------- void __fastcall TForm1::BMThread1Terminate(TObject *Sender, TBMExecuteThread *Thread, void *&Data) { Label1->Caption = "Stop"; Button1->Enabled = true; Button2->Enabled = false; } //--------------------------------------------------------------------------- void __fastcall TForm1::BMThread1Start(TObject *Sender, TBMExecuteThread *Thread, void *&Data) { Label1->Caption = "Start"; Button1->Enabled = false; Button2->Enabled = true;
Data = Label2; } //--------------------------------------------------------------------------- void __fastcall TForm1::Button2Click(TObject *Sender) { BMThread1->Stop (); } //--------------------------------------------------------------------------- void __fastcall TForm1::Button3Click(TObject *Sender) { BMThread2->Start (); } //--------------------------------------------------------------------------- void __fastcall TForm1::Button4Click(TObject *Sender) { BMThread2->Stop (); } //--------------------------------------------------------------------------- void __fastcall TForm1::FormCloseQuery(TObject *Sender, bool &CanClose) { BMThreadGroup1->Stop (); while ( BMThreadGroup1->Runing ) Application->ProcessMessages (); } //---------------------------------------------------------------------------
void __fastcall TForm1::BMThreadGroup1Start(TObject *Sender, TBMExecuteThread *Thread, void *&Data) { ProgressBar1->Position = 0; Label5->Visible = true; ProgressBar1->Visible = true; ButtonStopAll->Enabled = true; } //--------------------------------------------------------------------------- void __fastcall TForm1::BMThreadGroup1Terminate(TObject *Sender, TBMExecuteThread *Thread, void *&Data) { Label5->Visible = false; ProgressBar1->Visible = false; ProgressBar1->Position = 0; ButtonStopAll->Enabled = false; } //--------------------------------------------------------------------------- void __fastcall TForm1::BMThreadGroup1Update(TObject *Sender, TBMExecuteThread *Thread, void *&Data, int Percent) { if ( Sender == BMThread1 ) Label5->Caption = "Thread 1 :"; else Label5->Caption = "Thread 2 :";
ProgressBar1->Position = Percent; } //--------------------------------------------------------------------------- void __fastcall TForm1::BMThread2Execute(TObject *Sender, TBMExecuteThread *Thread, void *&Data) { Value2 = 0; for ( int i = 0; i < 1000; i ++ ) { Thread->PercentProgress = i / 10; SleepEx ( 20, false ); if ( Thread->Terminated ) break;
Value2 ++; Thread->Synchronize ( &SynchroEvent2, Data ); } } //--------------------------------------------------------------------------- void __fastcall TForm1::BMThread2Start(TObject *Sender, TBMExecuteThread *Thread, void *&Data) { Label3->Caption = "Start"; Button3->Enabled = false; Button4->Enabled = true;
Data = Label4; } //--------------------------------------------------------------------------- void __fastcall TForm1::BMThread2Terminate(TObject *Sender, TBMExecuteThread *Thread, void *&Data) { Label3->Caption = "Stop"; Button3->Enabled = true; Button4->Enabled = false; } //---------------------------------------------------------------------------
void __fastcall TForm1::ButtonStopAllClick(TObject *Sender) { BMThreadGroup1->Stop (); } //---------------------------------------------------------------------------
|  |  |  |  |
Делкам атача поради слаб интерес и safe na место 
Последна промяна RM на Вто Юни 09, 2009 1:20 pm, променена общо 2 пъти
|
| Сря Юни 03, 2009 9:30 pm |
|
 |
|
sv_shady
Ранг: Популярен
Регистриран на: Сря Окт 11, 2006 8:19 pm Мнения: 373 Местоположение: София/Edinburgh, UK
|
С риск да бъда заклеймен като ламер (не че ми пука) ще кажа, че се занимвам в момента с многонишков софтуер, базиран на .NET и C#. Софтуера слуша стриймове по HTTP и ги обрабова по най - различни начини, като включително визуализира информацията. Отначалото пуснах няколко нишки и си работеше, докато не продължих да го надграждам и изведнъж се появиха мистериозни бъгове и чак тогава открих една книжка специално по темата. Общо взето, ако ти трябва някаква не много сложна комуникация между няколко треда няма проблем, дори и по най - ламерския начин да е реализирана. Но ако станат повече тредове и редовно боравят с общи ресурси се започва ... опашки със задачи, семафори, заключване на рам и т.н.  Но за да гарантираш надеждност определено трябва да си наясно със последните неща, които споменах. Иначе си е любителска работа, но то всеки от там почва, дори и да е по работа 
|
| Чет Юни 04, 2009 12:06 pm |
|
 |
|
FiTTiLA
Ранг: Професионалист
Регистриран на: Сря Май 11, 2005 3:47 pm Мнения: 534
|
Абе какво става в този форум ...
Това е форум за микроконтролери и електроника, т.е. повечето хора трябва да са интелигентни, от статистически съображения от време на време се появяват случайни събития ...
Първо спазва се добрият тон, след което се опитваме да изложим, това което сме заредили в буфера, което пък се базира на нашият предишен опит и знания. Ако някой не е съгласен с мнението на някой друг, чрез подходящи материали и бумаги се опитва да го убеди в обратното. Иначе може да сте най-умите, най интелигетните, ако се подържа това ниво за всички оставате на нивото на езика на един "бакшиш", т.е. каруцарския език в действие.
Живееме в малка държава, в която всички се познаваме, малко или повече, не се знае утре къде ще се срещнем ... колегата Цецо Мудров е изключителен професионалист, така че ако може си спестявайте комплексите по негов адрес.
|
| Чет Юни 04, 2009 1:50 pm |
|
 |
|
miro_atc
Ранг: Форумен бог
Регистриран на: Нед Фев 26, 2006 6:52 pm Мнения: 11266 Местоположение: Добрич
|
Много странна дискусия
Програмист, който не умее да използва поне до някаква степен мнгозадачност е като човек който не познaва топлата вода - миризлива работа
Що се отнася до архитектурите имащи принос - те са две. Първата архитектура (или по-скоро група архитектури има най-голямо значение) - това са мейнфремките на DEC (vax/pdp) и на IBM (system 360...). Другата архитектура е х86. Точка.
Всичко остнало като PPC, ARM, MIPS и ала-бала са от графите - интересно, куриозно, любопитно и прочие. Но това са неща дето нямат принос към теорията и практиката.
За съжаление мейнфремчетата вече са като динозаврите (музейна рядкост). Така че имаме една архитектура и тая архитектура се доминира от една операционна система. Това са фактите! Харесва ни - не ни харесва - това е положението Минке!
---
Сега да си говорим че най-масовата архитектура с най-масовата ОС има проблем с нещо толкова фундаментално е несериозно. Няма проблем нито с x86 нито с MS бозата, ако имаше щеше да е лесно някой да ги избута от пазара. Но уви, няма проблем и не е лесно да бъдат изместени. Това не означава че няма по-добри решение - има... Възможно е и ДДС-то или ДПС-то на tqi барабар с ППС архитектурата да са по-добро решение. Но това няма значение - щото за 5% или 10% подобрение аз няма да си хвърля дипломата и да седна да ги разучавам.
Трябва да се предложи нещо значително по-добро, но уви никой досега не го е предложил  Само имат претенции да са много по-добри, а всъщност са валяци или в най-добрия случай малко по-бързи търтонетки....
|
| Чет Юни 04, 2009 2:04 pm |
|
 |
|
tgi
Ранг: Форумен бог
Регистриран на: Нед Юни 10, 2007 2:22 pm Мнения: 6492 Местоположение: София
|
Миро, толкова много глупости накуп си изписал,та не ми се навлиза и в детайли
защо са глупости.
Прочети малко и опитай пак. Очевидно не знаеш нито power, нито x86.
[edit] И нямам въобще предвид DPS-а, него го оставяме на мира засега.
Ако само погледнеш докъде са отишли 64-битовите power безумия на IBM, с които
правят каквото правят - не за масовия потребител, естествено, но тук се очаква
погледът да не е като на хора от улицата - ще ти се завие свят (ако си късметлия
да ти се размине само с това). X86 е стара допотопна мърсотия (открай време е
последното), която обслужва масовата публика, хем да има нещо святкащо в ръцете,
хем да няма истински компютри, че те могат да бъдат и опасни.
[/quote]
_________________------------------- www.tgi-sci.com------------------- http://www.flickr.com/photos/didi_tgi/
Последна промяна tgi на Чет Юни 04, 2009 3:21 pm, променена общо 1 път
|
| Чет Юни 04, 2009 3:00 pm |
|
 |
|
Dimitar
Ранг: Форумен бог
Регистриран на: Пет Ное 12, 2004 3:38 pm Мнения: 9103 Местоположение: Chicago, IL
|
tqi, не че много ми разбира главата от многонишкови неща, ама имам един въпрос - след като power архитектурата е толкова супер-дупер по-по-най защо Епъл я смениха с х86? Толкова ли са прости, или ти последно когато си се занимавал с х86 е било от времето на 8086  ?
|
| Чет Юни 04, 2009 3:20 pm |
|
 |
|
Цецо
Ранг: Форумен бог
Регистриран на: Пон Сеп 27, 2004 9:22 am Мнения: 15501 Местоположение: София
|
Фитила, не се коси бе. Той smtp е ясен. Не ми е в къщата, че да го мисля  Жив и здрав да е, утре нобелова награда за програмиране да вземе дано.
Ама тия двамата горните (miro и tqi) като седнат да се дърлят ми иде да хвана дървото.
Що бе джанъм се държите като пъпчиви тинейджърки, дето спорят за качествата на пишките на гаджета си?.... Всъщност знам защо. Щото на маса не сте се срещали (това е критика).
_________________ "Да еба и шибаната държава" мислеше си Гошо, докато се опитваше да улучи кофата за боклук от балкона на осмия етаж.
|
| Чет Юни 04, 2009 3:21 pm |
|
 |
|
tgi
Ранг: Форумен бог
Регистриран на: Нед Юни 10, 2007 2:22 pm Мнения: 6492 Местоположение: София
|
Не знам. Какво предполагам става очевидно от добавеното с редакция към предишния
ми пост. Публичните приказки тогава бяха, че Freescale не смогвали да произведат каквото
им трябва на apple - може и да е вярно, на intel процесите им са по-добри, май само IBM
имат съпоставими (процеси, не архитектури).
Но не е голяма загуба. Apple бяха и си останаха в бижутерския сектор, така и никога не
разсекретиха хардуера си отвътре (дават го засекретен, достъпен през нещо, което
наричат "open firmware", LOL).
Горе-долу същото правят и sony с playstatio-3 - cell процесорът е е чудесен и
документиран, но периферните чипове са дълбоко секретни. MS с техния XBOX пък
дори и процесора не са разкрили (3 64 битови power ядра, толкова се знае).
В тоя ред на мисли може и моите подозрения да се окажат верни, прекалено еднакво
е поведението откъм секретност на всички, които направят нещо от някаква изчислителна
мощност нагоре.
Но и не знам в детайли нито едната система, та дори и не знам би ли си струвало човек да има
документация, та да може да я програмира - не че не ми се ще, и то как. да портна DPS-а на 64
битова платформа и да давам напред, ама няма къде.
_________________------------------- www.tgi-sci.com------------------- http://www.flickr.com/photos/didi_tgi/
|
| Чет Юни 04, 2009 3:33 pm |
|
|
Кой е на линия |
Потребители разглеждащи този форум: 0 регистрирани и 0 госта |
|
Вие не можете да пускате нови теми Вие не можете да отговаряте на теми Вие не можете да променяте собственото си мнение Вие не можете да изтривате собствените си мнения Вие не можете да прикачвате файл
|
|