Pokaż wiadomości

Ta sekcja pozwala Ci zobaczyć wszystkie wiadomości wysłane przez tego użytkownika. Zwróć uwagę, że możesz widzieć tylko wiadomości wysłane w działach do których masz aktualnie dostęp.


Pokaż wątki - gawron89

Strony: [1]
1
C++ / boost conditional variable
« dnia: Lipiec 25, 2014, 10:46:00 »
witam, mam problem z takim kodem

using namespace boost;

condition_variable cond;
mutex m;

void func()
{
this_thread::sleep(posix_time::seconds(4));
cond.notify_one();
}

int main()
{
for(;;)
{
thread t(func);
mutex::scoped_lock lock(m);
if(cond.wait_for(lock, chrono::seconds(2)) == cv_status::timeout)
{
std::cout << "timeout\n";
}
else
{
std::cout << "error\n";
}
t.join();
}
return 0;
}

watek główny jest blokowany az drugi watek wywoła notify_one() lub miną 2 sekundy. drugi watek ustawiony jest na 4 sekundy, wiec cond.wait_for według mnie zawsze powinno zwracać timeout, natomiast wartość zwracana jest dosłownie losowa, raz timeout a następnym razem nie, wypisuje error ~7 na 10 razy. co tu zmienić by to działało?


2
Projektowanie kodu / dodanie timera do kolejki
« dnia: Marzec 25, 2014, 12:48:36 »
witam, przy pomocy boosta stworzyłem kolejkę w oddzielnym wątku która wygląda tak
void WorkQueue::add(message_type_t type, param_t low, param_t high)
{
boost::mutex::scoped_lock lk(mutex_);
event_message_t* m = alloc_message(type, low, high);
bool empty = q_.empty();
q_.push_back(m);
if(empty)
conditional_.notify_one();
}

//watek boost
void WorkQueue::worker()
{
event_message_t* m = 0;
while(1)
{
while(!stop_)
{
{
boost::mutex::scoped_lock lock(mutex_);
while(q_.empty() && !stop_)
conditional_.wait(lock);
if(!stop_)
{
m = q_.front();
q_.pop_front();
}
}
if(!stop_)
{
process(m);
}
free_message(m);
m = 0;
}

if(stop_)
return;
}
}

int WorkQueue::process( event_message_t* m )
{ switch (m->type)
{
case EV_PRINT_TO_CONSOLE:
{
std::cout << m->str;
break;
}

default:
return 1;
}
return 0;
}


event_message_t* WorkQueue::alloc_message( message_type_t type,
  param_t low, param_t high )
{
event_message_t* m = new event_message_t;
m->type = type;
m->low = low;
m->high = high ;

switch (type)
{
case EV_PRINT_TO_CONSOLE:
m->str = (const char*)low;
break;
default:
delete m;
return 0;
}

return m;
}

void WorkQueue::free_message( event_message_t* m )
{
switch (m->type)
{
case EV_PRINT_TO_CONSOLE:
default:
delete m;
break;
}
}


uzycie tego wygląda tak
int main()
{
WorkQueue q;
q.add(EV_PRINT_TO_CONSOLE, "hello ", 0);
q.add(EV_PRINT_TO_CONSOLE, "world\n", 0);

// blokada głownego wątku na potrzeby tego przykladu
while(1){}
}
funkcja process wykonuje odpowiednie działania.

potrzebuje przerobic funkcje worker tak aby to było możliwy kod poniżej, bo nie mam pojęcia jak się za to zabrać
int timerid = 1;
int seconds = 5;
q.add(EV_TIMER, (param_t)timerid, (param_t)seconds); // wykona sie pozniej
q.add(EV_PRINT_TO_CONSOLE, "hello ", 0);
q.add(EV_PRINT_TO_CONSOLE, "world\n", 0);

nie chce używać dodatkowego wątku do liczenia czasu ani boost asio, sygnatura add musi pozostać bez zmian.
ktoś może podsunąć jakiś pomysł?

3
Inne / wyszukiwanie w google image
« dnia: Grudzień 26, 2011, 21:44:02 »
witam
pisze w tej chwili własna przeglądarkę do zdjęć ala faststone i chciałbym dodać opcje wyszukiwania podobnych zdjęć w serwisach google image, iqdb.org i innych. wszystko chciałbym wyświetlić w przeglądarce jako nowa karta. i wymyśliłem tylko to ze gdy wybierze się prawym na zdjęcie i szukaj, będę generował w tle plik html który potem otworze, a przeglądarka wysle zdjęcie które znajduje się u mnie na dysku do serwisu i wyświetli rezultaty. pytanie czy takie coś jest możliwe? znam tylko html i podstawy podstaw js i w sumie nie mam pojęcia jak napisać taki skrypt, za wszelkie wskazówki będę wdzięczny.

Pozdrawiam

4
Językoznawstwo / pauza skryptu lua/inne
« dnia: Wrzesień 19, 2011, 16:38:23 »
witam
problem przedstawię przykładem
Kod: (lua) [Zaznacz]
onStart = function()
   local time = 10;
   unit:move(x, y);  --1
   screen:fadeout(time);  --2
   unit:kill(); --3
end

1. jednostka zaczyna się poruszać ofc
2. tutaj problem, ekran zaczyna się rozjaśniać i skrypt powinien zaczekać cale 10 sec aż do pełnego rozjaśnienia, w miedzy czasie kod c++ musi być normalnie wykonywany
3. po 10 sec dead

moim założeniem jest stworzyć jak najbardziej prosty interface w skryptach, bardzo zbliżony do tego co mamy w edytorze wyzwalaczy w warcrafcie 3, chce uniknąć jakiegokolwiek liczenia klatek wewnątrz skryptów. czy jest to możliwe w lua?
project nie jest jeszcze rozpoczęty i jestem w stanie zmienić język na jakikolwiek inny, byle dało się zrobić coś równie prostego

5
C++ / problem z linkowaniem
« dnia: Czerwiec 23, 2011, 17:26:49 »
witam
postaram sie opisac moj problem jak najprosciej, jest sobie jakas biblioteka 1.lib, ja robie wrappera tworzac swoj 2.lib, i teraz gdy dodaje moj lib do programu testowego musze takze dodac 1.lib, jest mozliwosc aby moj 2.lib zawieral w sobie 1.lib i nie trzeba bylo go linkowac? twoche probowalem zmieniac opcje linkera ale jakos mi to nie wychodzilo

pozdro

6
C++ / [c++] problem szablon w szablonie
« dnia: Październik 23, 2010, 19:47:36 »
mamy tutaj szablon w szablonie, a blad mowi ze nie znalazl odpowiedniej definicji konstructora

Kod: (cpp) [Zaznacz]
template<typename T, typename K>
class Foo
{
template<typename T, typename K>
class Bar
{
T a_;
K b_;
public:
Bar(T a, K b);
};
Bar<T, K> bar;

public:

Foo(T a, K b);
};


template<typename T, typename K>
Foo<T,K>::Bar<T,K>::Bar(T a, K b)
:a_(a)
,b_(b)
{
}

template<typename T, typename K>
Foo<T,K>::Foo(T a, K b)
:bar(a, b)
{

}


int main()
{
Foo<int,int>foo(1, 2);
}

tutaj blad

d:\moje dokumenty\visual studio 2008\projects\template test\template test\main.cpp(29) : error C2244: 'Foo<T,K>::Bar<T,K>::Bar' : unable to match function definition to an existing declaration
        d:\moje dokumenty\visual studio 2008\projects\template test\template test\main.cpp(13) : see declaration of 'Foo<T,K>::Bar<T,K>::Bar'
        definition
        'Foo<T,K>::Bar<T,K>::Bar(T,K)'
        existing declarations
        'Foo<T,K>::Bar<T,K>::Bar(T,K)'


gdzie tu jest blad?
uzywam vs2008

jak dam definicje konstruktora w ciele klasy to wszystko jest ok, ale czy nie wplynie to na wielkosc pliku wyjsciowego?


7
Visual Studio / cl 2010 w VS2008
« dnia: Wrzesień 29, 2010, 16:11:35 »
witam

Chciałbym wiedzieć czy jest możliwość używać kompilatora cl vs2010 w vs2008?
Powód jest oczywisty: komp mi nie uciagnie vs2010 ;p a lambdy, auto itd. fajnie wyglądaj, i napewno by mi się przydały. Próbowałem przenieś zawartość folderu bin, tego z cl.exe ale to nie chciało działać.
Robił może ktoś coś takiego?

8
Sztuczna inteligencja / pathfinding
« dnia: Wrzesień 07, 2010, 13:30:41 »
Witam.

Ostatnio robie sobie małego rpg (nie mmo) i doszedłem do fazy z ai, bedę używał A* jeśli uda mi się zrobić, jeśli nie to mam już zaimplementowany ten drugi, podobny skrypt chyba na literę 'B', nie pamiętam nazwy. Mam tam 2 rodzaje obiektów z kolizjami: unit i solid, niema kolizji miedzy jednostkami. Wszystkie obiekty są luźno poukładane na mapie, mają różną wielkość kolizji, za podstawę mają idealne koła lub kwadraty bez możliwości obrotu, i problem pojawia się gdy np. 2 obiekty solid leżą częściowo na kwadracie od siatki, a jednostka ma bardzo mały promień kolizji i mogła by się miedzy tymi obiektami przecisnąć, tylko nie bardzo wiem jak to zrobić. Co radzicie?

9
Szkółka / problem z referencja w cb
« dnia: Sierpień 09, 2010, 23:18:33 »
Witam wszystkich.

Mam problem z tym kodem w CodeBlocks

Cytuj

// uproszczona deklaracja SetBackgroundColor
namespace gaw
{
   class PreviewWindow
   {
      //...
      public:
      
      //nie ma żadnej innej funkcji o tej samej nazwie
      void SetBackgroundColor(sf::Color& color); // zwracam uwage na refencje
      //...
   };
}

// jedna z funkcja ktora powoduje błędy
void MainFrame::mi_PreviewDarkBgOnMenuSelection( wxCommandEvent& event )
{
   if(event.GetId()==this->e_PreviewDarkBg)
      this->m_PreviewWindow->SetBackgroundColor(sf::Color(64,64,64)); //błąd w tej linijce
}



i błąd z cb:

Cytuj

D:\Moje dokumenty\Visual Studio 2008\Projects\Kopia rpg\Edytor\PreviewWindow.cpp:151: error: no matching function for call to 'gaw::PreviewWindow::SetBackgroundColor(sf::Color)'
D:\Moje dokumenty\Visual Studio 2008\Projects\Kopia rpg\Edytor\/previewwindow.h:21: note: candidates are: void gaw::PreviewWindow::SetBackgroundColor(sf::Color&)


jakiś problem z wyborem funkcji, lecz tak jak pisałem w komentarzu, to jest jedyna deklaracja
normalnie gdy piszę w VS2008 żadnych błedów nie ma, cały kod kompiluje się bez żadnego warninga, ale w codeblocks to nie dziala, lecz jest taka możliwość:

Cytuj

void MainFrame::mi_PreviewDarkBgOnMenuSelection( wxCommandEvent& event )
{
    sf::Color color(64,64,64); //wcześniejsz deklaracja
    if(event.GetId()==this->e_PreviewDarkBg)
      this->m_PreviewWindow->SetBackgroundColor(color); // teraz jest ok, żadnych błędów w cb
}



i teraz moje pytanie: jak zrobić, żeby wersja z visuala działała w cb?
zależy mi na tym żebym nie musiał wymyślać niepotrzebnych nazw dla tych zmiennych, bo jest to nie wygodne, a podobnych zmiennych jest bardzo duzo.

Pozdrawiam.

Strony: [1]