Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ wxWidgets _ Работа с потоками...

Автор: kendy 3.1.2008, 21:30

Я слышал насчет потоков, но не понимаю как они работают и как с ними работать в wxWidgets.
Можете обьяснить мне, а лучше с примером что это такое?

Автор: tino 3.1.2008, 21:49

Цитата(Guest_kendy_* @ 3.1.2008, 21:30) *
Я слышал насчет потоков, но не понимаю как они работают и как с ними работать в wxWidgets.
Трудный случай, не обижайся... :)

Для начала стоит почитать, что такое потоки, это хорошо описано в книге Джеффри Рихтера - "Создание эффективных WIN32-приложений с учетом специфики 64-разрядной версии Windows", ты ее найдешь http://rouse.drkb.ru/books.php. Хоть книга написана и для винды общие принципы будут понятны.

А вот когда разберешься с тем, что такое потоки и процессы будет легче. Почитай еще что такое синхронизация, тоже будет полезно. :)

Пример создания потока:
class MySignallingThread : public wxThread
{
public:
    MySignallingThread(wxMutex *mutex, wxCondition *condition)
    {
        m_mutex = mutex;
        m_condition = condition;

        Create();
    }

    virtual ExitCode Entry()
    {
        ... do our job ...

        // tell the other(s) thread(s) that we're about to terminate: we must
        // lock the mutex first or we might signal the condition before the
        // waiting threads start waiting on it!
        wxMutexLocker lock(*m_mutex);
        m_condition->Broadcast(); // same as Signal() here -- one waiter only

        return 0;
    }

private:
    wxCondition *m_condition;
    wxMutex *m_mutex;
};

int main()
{
    wxMutex mutex;
    wxCondition condition(mutex);

    // the mutex should be initially locked
    mutex.Lock();

    // create and run the thread but notice that it won't be able to
    // exit (and signal its exit) before we unlock the mutex below
    MySignallingThread *thread = new MySignallingThread(&mutex, &condition);

    thread->Run();

    // wait for the thread termination: Wait() atomically unlocks the mutex
    // which allows the thread to continue and starts waiting
    condition.Wait();

    // now we can exit
    return 0;
}

Взят здесь: http://crossplatform.ru/documentation/wxWidgets/2.8.6/wx_wxcondition.php

Автор: kendy 3.1.2008, 22:07

Спасибо, а можно на словах, просто я не программер, а админ, да и там слишком много читать нужно, чтобы понять что к чему... :)

Автор: tino 4.1.2008, 11:46

На словах не стоит потому как в книжке описано достаточно хорошо, и не так уж и много там читать, всего 1 главу о потоках.

Автор: Саня 5.1.2008, 21:54

Какая разница админ ты или программер, если хочешь работать с потоками, должен знать как они себя ведут и что из себя представляют.

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)