Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Тетрис и многопоточность - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Подскажите, как должно выглядеть это задание? http://www.cyberforum.ru/cpp-beginners/thread342624.html
Разработайте приложение rle.exe, выполняющее RLE-компрессию бинарных файлов с сильно разреженным содержимым, а также декомпрессию упакованных ею файлов. Необходимо реализовать следующий принцип...
C++ string народ я вот решаю задачу .. вводишь в файл input.txt латинскую букву...а в файл output.txt выводить должно справа стоящую на клавиатури букву. вот код: #include <fstream> #include <string>... http://www.cyberforum.ru/cpp-beginners/thread342590.html
Что такое ' ' (апострофы) C++
Да, я знаю что char c = '1'; // == 48 А вот что такое '1234' и почему нельзя '12345'?
Определить когда массив меняет знак. C++
Дан массив чисел, как положительных так и отрицательных. Нужно определить номер элемента, который первым меняет знак с отрицательного на положительный и номер элемента, который последним меняет...
C++ Абстракция данных...модули определяющие типы http://www.cyberforum.ru/cpp-beginners/thread342582.html
//--------------------------------------------------------------------------- #pragma hdrstop #include <tchar.h> #include <dos.h>...
C++ namespace Страуструп 3-е издание Добрый вечер народ) Читаю книгу Страуструпа 3-е издание там встретился такой фрагмент кода: namespace Stack { void push(char); char pop(); } void... подробнее

Показать сообщение отдельно
talis
791 / 543 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
17.08.2011, 14:20
Смотрите, ввод/вывод в одном потоке без задержек, причём вывод происходит реже ввода:

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#include <stdio.h>
#include <time.h>
 
#include <windows.h>
 
#define IS_UP(x) ( x & 0x8000 )
 
int i = 0;
 
/* проверка нажатия клавиши, изменение i и вывод её на той же строке */
int function1()
{
    /* проверка на нажатость стрелки-вверх и стрелки-вниз */
    if( IS_UP( GetAsyncKeyState( VK_UP ) ) )
       i++;
    else if( IS_UP( GetAsyncKeyState( VK_DOWN ) ) )
       i--;
 
    /* стираем все нули старого i */
    int u = abs(i);
 
    while( u >= 10  )
    {
        putchar( '\b' );
        u /= 10;
    }
 
    /* стираем знак минуса, если он был */
    if( i < 0 )
       putchar( '\b' );
 
    /* стираем оставшийся символ i и выводим i на той же строке */
    printf( "\b%i", i );
}
 
/* вывод i на новой строке */
int function2()
{
    printf( "\n%i", i );
}
 
int main( int argc, char ** argv )
{
    clock_t timer = clock();
    clock_t func1_delay = timer, func2_delay = timer;
 
    while( 1 )
    {
        timer = clock(); /* время, прошедшее с моменты запуска программы */
 
        if( timer >= func1_delay ) /* если пора запускать function1  */
        {
           function1();
           func1_delay = timer + ( CLOCKS_PER_SEC / 100 ); /* запустить function1 ещё раз через одну сотую секунды */
        }
 
        if( timer >= func2_delay ) /* если пора запускать function2  */
        {
           function2();
           func2_delay = timer + ( CLOCKS_PER_SEC * 2); /* запустить function2  ещё раз через 2 секунды */
        }
 
        Sleep( 100 ); /* ждём 100 миллисекунд (в 1 секунде 1000 миллисекунд) и проверяем время */
    }
 
    return 0;
}
Добавлено через 2 минуты
Таким образом можете напихать теоретически сколько угодно функций, которые будут запускаться одна за другой через разные промежутки времени. Один совет: делайте функции настолько быстрыми, насколько можно, иначе одна тормознутая функция затормозит всю игру. Если никак нельзя ускорить - вот тогда уже выносите её в соседний поток, но это повлечёт очень сильную модификацию кода всей программы.

P.S. В старом добром Half-Life 1 было сделано по такому принципу
2
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru