CYFROWY BARON • PROGRAMOWANIE • Zobacz wątek - Szybki odczyt z pliku- podejście numer 2

Szybki odczyt z pliku- podejście numer 2

dział ogólny

Re: Szybki odczyt z pliku- podejście numer 2

Nowy postprzez polymorphism » piątek, 21 stycznia 2011, 18:12

Tak sobie myślę, że chyba lepiej będzie jak tę część kodu z socketami napiszesz w DLL-ce, którą później zaimportujesz do skryptu. Wtedy z poziomu C/C++ mógłbyś użyć innych, bardziej odpowiednich metod komunikacji międzyprocesowej (np. rurę). Biblioteka mogłaby eksportować trzy funkcje: server_init, sever_push_data i server_close. Jeśli dobrze rozumiem koncept, strona platformy XTB powinna pracować w trybie serwera.
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows XPFirefox

Re: Szybki odczyt z pliku- podejście numer 2

Nowy postprzez Corvis » poniedziałek, 24 stycznia 2011, 00:15

Nie no chyba jednak program Builderowski powinien być serwerem i nasłuchiwać danych od platformy. Bo jak pisałem wcześniej dane mogę chcieć ściągać z kilku platform.
"Sukcesy trwają, dopóki ich ktoś nie spieprzy. Porażki są wieczne"

Dr Gregory House
Avatar użytkownika
Corvis
Programista I
Programista I
 
Posty: 880
Dołączył(a): sobota, 26 lipca 2008, 00:31
Podziękował : 80
Otrzymał podziękowań: 30
System operacyjny: WINDOWS 7 64-bity
Kompilator: Praca - C++ Builder XE2 ENTERPRISE - Update 4, Dom - C++ Builder XE4 - Uddate 1
Gadu Gadu: 0
    Windows VistaChrome

Re: Szybki odczyt z pliku- podejście numer 2

Nowy postprzez polymorphism » poniedziałek, 24 stycznia 2011, 11:34

No dobrze, ale to Twój program chce coś od tych platform, a nie na odwrót, prawda?
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows XPFirefox

Re: Szybki odczyt z pliku- podejście numer 2

Nowy postprzez Corvis » poniedziałek, 24 stycznia 2011, 13:26

No tak, ale to co jak będe miał 10 platform to każda jest serwerem ? :roll:
"Sukcesy trwają, dopóki ich ktoś nie spieprzy. Porażki są wieczne"

Dr Gregory House
Avatar użytkownika
Corvis
Programista I
Programista I
 
Posty: 880
Dołączył(a): sobota, 26 lipca 2008, 00:31
Podziękował : 80
Otrzymał podziękowań: 30
System operacyjny: WINDOWS 7 64-bity
Kompilator: Praca - C++ Builder XE2 ENTERPRISE - Update 4, Dom - C++ Builder XE4 - Uddate 1
Gadu Gadu: 0
    Windows VistaChrome

Re: Szybki odczyt z pliku- podejście numer 2

Nowy postprzez polymorphism » poniedziałek, 24 stycznia 2011, 13:37

A to jakiś problem?

Zresztą to Twój program, zatem rób jak chcesz. Ja tam lubię, jeśli koncepcyjnie wszystko się zgadza, i w tym przypadku, jak sądzę, serwerem powinny być platformy brokerskie.
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows XPFirefox

Re: Szybki odczyt z pliku- podejście numer 2

Nowy postprzez Corvis » wtorek, 25 stycznia 2011, 09:46

Nie znam się na sieciach nie mam doświadczenia w tego typu aplikacjach jeszcze.

Odnośnie tematu - sposobem z HOT KEYem dziennie zbieram średnio 10 000 więcej danych :o niż moim sposobem z timerem. Ciekawe ile jeszcze odzyskam na sposobie z Socketami ;)
"Sukcesy trwają, dopóki ich ktoś nie spieprzy. Porażki są wieczne"

Dr Gregory House
Avatar użytkownika
Corvis
Programista I
Programista I
 
Posty: 880
Dołączył(a): sobota, 26 lipca 2008, 00:31
Podziękował : 80
Otrzymał podziękowań: 30
System operacyjny: WINDOWS 7 64-bity
Kompilator: Praca - C++ Builder XE2 ENTERPRISE - Update 4, Dom - C++ Builder XE4 - Uddate 1
Gadu Gadu: 0
    Windows VistaChrome

Re: Szybki odczyt z pliku- podejście numer 2

Nowy postprzez polymorphism » wtorek, 25 stycznia 2011, 11:10

Nie znam się na sieciach (...)

Model klient - serwer nie odnosi się tylko do sieci. Na przykład linuksowy JACK jest serwerem dźwiękowym, w windowsowym COM masz także ten model - in-process server (m.in. rozszerzenia powłoki) i out-of-process server (niektóre implementacje OLE automation).

Ciekawe ile jeszcze odzyskam na sposobie z Socketami

Jak zrobisz to z głową, to żadnych strat nie będzie. U Ciebie problemem jest/był brak jakiejkolwiek synchronizacji plus naiwne założenia.
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows XPFirefox

Re: Szybki odczyt z pliku- podejście numer 2

Nowy postprzez Corvis » sobota, 16 lipca 2011, 11:33

Witam,

Po długiej przerwie.


Aktualnie korzystam z rozwiązania z HOT KEYami. Funkcja moja wygląda mniej więcej tak:

KOD cpp:     UKRYJ  
void __fastcall TForm1::GetHotKey(TMessage &Msg) {
         if(Msg.Msg == WM_HOTKEY) {
                if(Msg.WParam == id1) {                 // D1
                        b1 = CzytajPlik(pFile1);
                } else if(Msg.WParam == id2) {  // D2
                        b2 = CzytajPlik(pFile2);
              }
         }

         HotKey(Msg);
}


CzytajPlik:

KOD cpp:     UKRYJ  
double CzytajPlik(FILE *pFile) {
        unsigned char bufor[12]; for(int i=0;i<12;++i) bufor[i] = 0x00;

        if(pFile) {
                fseek(pFile, 0, SEEK_END);
                fseek(pFile, ftell(pFile)-12,SEEK_SET);
                fread(bufor,10,1,pFile);
        }

        return atof(bufor) * 100000;
}
 


Mam tylko dziwne wrażenia, że jak program dostaje sygnały do odczytania danych które idą np tak: (d1,d2 to z funkcji wyżej id1 i id2)

D1,D1,D1,D1,D2,D1,D1,D1,D1,D2

To się jakoś zapycha i nie wyrabia tego odczytywać dobrze. Mam wrażenie, że tworzy się kolejka komunikatów.

Baronie jest możliwość zrobić odczytywania danych D1 i D2 w 2 różnych wątkach ??? tak, żeby nic na siebie nie właziło.

Mam nadzieję, że jasno to opisałem hehe
"Sukcesy trwają, dopóki ich ktoś nie spieprzy. Porażki są wieczne"

Dr Gregory House
Avatar użytkownika
Corvis
Programista I
Programista I
 
Posty: 880
Dołączył(a): sobota, 26 lipca 2008, 00:31
Podziękował : 80
Otrzymał podziękowań: 30
System operacyjny: WINDOWS 7 64-bity
Kompilator: Praca - C++ Builder XE2 ENTERPRISE - Update 4, Dom - C++ Builder XE4 - Uddate 1
Gadu Gadu: 0
    Windows VistaChrome

Re: Szybki odczyt z pliku- podejście numer 2

Nowy postprzez Cyfrowy Baron » sobota, 16 lipca 2011, 11:46

Corvis napisał(a):Mam wrażenie, że tworzy się kolejka komunikatów.


To oczywiste, jeżeli wcześniej wczytywany plik nie zdążył się wczytać, gdy nadchodzi komunikat o wczytaniu kolejnego pliku, to musi czekać w kolejce.

Czy można to zrobić w wątkach? Można, ale wtedy całe przetwarzanie plików powinno odbywać się w watkach, w przeciwnym razie pliki zostaną np. wczytane jednocześnie, ale będą czekać w kolejce na przetworzenie, jakkolwiek je przetwarzasz.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: Szybki odczyt z pliku- podejście numer 2

Nowy postprzez Corvis » sobota, 16 lipca 2011, 11:49

Czyli jak rozumiem:

KOD cpp:     UKRYJ  
if(Msg.Msg == WM_HOTKEY) {
    if(Msg.WParam == id1) {                
        b1 = CzytajPlik(pFile1);  // << === Tutaj zamiast wywoływać funkcję odpalam wątek ?????
    }
}
 

Ale znowu czy tym razem, wątki nie będą na siebie nałazić ?? Może to głupie pytania ale mam słabe doświadczenie w pracy z wątkami.
"Sukcesy trwają, dopóki ich ktoś nie spieprzy. Porażki są wieczne"

Dr Gregory House
Avatar użytkownika
Corvis
Programista I
Programista I
 
Posty: 880
Dołączył(a): sobota, 26 lipca 2008, 00:31
Podziękował : 80
Otrzymał podziękowań: 30
System operacyjny: WINDOWS 7 64-bity
Kompilator: Praca - C++ Builder XE2 ENTERPRISE - Update 4, Dom - C++ Builder XE4 - Uddate 1
Gadu Gadu: 0
    Windows VistaChrome

Re: Szybki odczyt z pliku- podejście numer 2

Nowy postprzez Cyfrowy Baron » sobota, 16 lipca 2011, 12:48

Wątki działają niezależnie, co oznacza, że każdy działa sobie, ale może wystąpić sytuacja o której pisałem w poprzednim poście, że samo odczytanie plików odbędzie się w wątkach, ale jeżeli coś dalej robisz z tymi plikami, np. łączysz je czy coś podobnego to kolejkowanie i tak wystąpi, gdyż program będzie czekał na zakończenie wszystkich wątków. Nie wiem co dokładnie robisz z tymi plikami, więc nic więcej nie mogę doradzić.

Corvis napisał(a):// << === Tutaj zamiast wywoływać funkcję odpalam wątek ?????


Wychodzi na to, że tutaj...
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Poprzednia strona

  • Podobne tematy
    Odpowiedzi
    Wyświetlone
    Ostatni post

Powrót do Ogólne problemy z programowaniem

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 7 gości

cron