crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Работа с потоками...
Гость_kendy_*
сообщение 3.1.2008, 21:30
Сообщение #1





Гости








    


Я слышал насчет потоков, но не понимаю как они работают и как с ними работать в wxWidgets.
Можете обьяснить мне, а лучше с примером что это такое?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
tino
  опции профиля:
сообщение 3.1.2008, 21:49
Сообщение #2


Новичок


Группа: Новичок
Сообщений: 6
Регистрация: 2.11.2007
Пользователь №: 17

Спасибо сказали: 0 раз(а)




Репутация:   0  


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

Для начала стоит почитать, что такое потоки, это хорошо описано в книге Джеффри Рихтера - "Создание эффективных WIN32-приложений с учетом специфики 64-разрядной версии Windows", ты ее найдешь ЗДЕСЬ. Хоть книга написана и для винды общие принципы будут понятны.

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

Пример создания потока:
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;
}

Взят здесь: wxcondition
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kendy
  опции профиля:
сообщение 3.1.2008, 22:07
Сообщение #3


Новичок


Группа: Новичок
Сообщений: 6
Регистрация: 3.1.2008
Пользователь №: 59

Спасибо сказали: 0 раз(а)




Репутация:   0  


Спасибо, а можно на словах, просто я не программер, а админ, да и там слишком много читать нужно, чтобы понять что к чему... :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
tino
  опции профиля:
сообщение 4.1.2008, 11:46
Сообщение #4


Новичок


Группа: Новичок
Сообщений: 6
Регистрация: 2.11.2007
Пользователь №: 17

Спасибо сказали: 0 раз(а)




Репутация:   0  


На словах не стоит потому как в книжке описано достаточно хорошо, и не так уж и много там читать, всего 1 главу о потоках.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_Саня_*
сообщение 5.1.2008, 21:54
Сообщение #5





Гости








    


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

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 10.12.2018, 19:26