Модераторы: xvr

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как сделать прогу? 
:(
    Опции темы
Apacho
Дата 21.6.2007, 14:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 28.9.2006
Где: Россия

Репутация: нет
Всего: нет



Подскажите пожалуйста, как сделать программу, где кто-нибудь будет вводить что-нибудь(функция cin) и одновременно будет идти таймер. smile  
PM MAIL   Вверх
FiMa1
Дата 21.6.2007, 14:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 408
Регистрация: 23.9.2006

Репутация: нет
Всего: 6



Это слишком абстрактная формулировка, уточни в чем проблема..?
PM   Вверх
Apacho
Дата 21.6.2007, 14:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 28.9.2006
Где: Россия

Репутация: нет
Всего: нет



Я не знаю, как сделать чтобы несколько функций работало одновременно, а это просто пример.
PM MAIL   Вверх
casey
Дата 21.6.2007, 14:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 74
Регистрация: 20.12.2006
Где: Украина

Репутация: нет
Всего: 2



Многопоточность это называется, а сделать можно по-разному, смотря на чем пишешь, наиболее общий вариант - с помощью API-функции CreateThread (это если под Виндовз)
PM MAIL WWW   Вверх
FiMa1
Дата 21.6.2007, 15:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 408
Регистрация: 23.9.2006

Репутация: нет
Всего: 6



Меня тоже интересует этот вопрос. К сожалению, до сих пор не нашлось времени изучить API/многопоточность, есть ли еще способы заставить выполняться кусок кода "в фоне" по отношению к другому.
PM   Вверх
Apacho
Дата 21.6.2007, 15:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 28.9.2006
Где: Россия

Репутация: нет
Всего: нет



Мне надо под Линух
PM MAIL   Вверх
DigitSphinx
Дата 21.6.2007, 15:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 442
Регистрация: 28.4.2007
Где: Москва

Репутация: нет
Всего: 3



FiMa1, Для винды , пишется функция :
DWORD WINAPI ThrProc(LPVOID lParam)
{
}
И вызывается с помощью CreateThread()
Самым простым примером может быть така прога
Код

#include <windows.h>
#include <iostream>
#include <conio.h>
using namespace std;
DWORD WINAPI th( LPVOID lParam ) 
{
    int a = *(int*)lParam;
    for (a; a > 0; a--)
        cout << "a = " << a << endl;
    return 0;
}
int _tmain(int argc, _TCHAR* argv[])
{
    int b = 20;
    HANDLE h = CreateThread(0, 0, &th, &b, 0, NULL);
    for (int i = 0; i < 20; i++)
        cout << " i = " << i << endl;
    _getch();
    return 0;
}

Запусти и посмотри что получится
Затем открой MSDN и почитай про функции
Код

CreateThread(); 
AfxBeginThread();
WaitForSingleObject();
WaitForMultipleObjects();
SuspendThread()

И т.д.


Это сообщение отредактировал(а) DigitSphinx - 21.6.2007, 16:02


--------------------
Чтобы пробить стену лбом нужен или большой разбег, или много лбов.
(Альберт Эйнштейн)
Умен ты или глуп, велик ты или мал, не знаем мы, пока ты слова не сказал.
(Альберт Эйнштейн)
user posted image
PM MAIL ICQ   Вверх
Apacho
Дата 21.6.2007, 16:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 28.9.2006
Где: Россия

Репутация: нет
Всего: нет



А для Линукса есть что-нибудь?
PM MAIL   Вверх
DigitSphinx
Дата 21.6.2007, 16:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 442
Регистрация: 28.4.2007
Где: Москва

Репутация: нет
Всего: 3



Apacho, Линух пока в глаза не видел (срочно на курсы лек.без. !!!)   smile  smile  smile 


--------------------
Чтобы пробить стену лбом нужен или большой разбег, или много лбов.
(Альберт Эйнштейн)
Умен ты или глуп, велик ты или мал, не знаем мы, пока ты слова не сказал.
(Альберт Эйнштейн)
user posted image
PM MAIL ICQ   Вверх
nickless
Дата 21.6.2007, 18:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гентозавр
****


Профиль
Группа: Участник Клуба
Сообщений: 2976
Регистрация: 29.8.2005
Где: Germany

Репутация: 4
Всего: 181



Цитата(Apacho @  21.6.2007,  13:12 Найти цитируемый пост)
где кто-нибудь будет вводить что-нибудь(функция cin) и одновременно будет идти таймер

Имхо наиболее простой способ под линукс - использовать QTimer из Qt smile , но будет зависимость от Qt, а вообще этот вопрос другой раздел, поищи там примеры работы с потоками.


--------------------
user posted image

Real men don't use backups, they post their stuff on a public ftp server and let the rest of the world make copies
- Linus Torvalds
PM MAIL   Вверх
MAKCim
Дата 21.6.2007, 19:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 84
Всего: 207



Код

void *thread_routine(void *args) {
    int file = open("data", O_CREAT | O_EXCL | O_WRONLY, 0666);
    if (file < 0)
        goto exit;
    int number = 0;
    for (; number < 1000000; ++number) 
        write(file, &number, sizeof(int));
    close(file);
exit:
    pthread_exit(NULL);
}

int main() {
    pthread_t thread;
    if (pthread_create(&thread, NULL, &thread_routine, NULL))
        return errno;
    int number;
    scanf("%d", &number);
    pthread_join(thread, NULL);
    return 0;
}



--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
Apacho
Дата 23.6.2007, 14:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 28.9.2006
Где: Россия

Репутация: нет
Всего: нет



Когда я пишу:

#include <pthread.h>
#include <stdio.h>
#include <iostream.h>

void* pil(void* asd)
{
cout << "HELLO";
return NULL;
}

int main()
{
pthread_t thr;
pthread_create(&thr,NULL,&pil,NULL);
pthread_join(thr,NULL);
return 0;
}

У меня выскакивает такая ошибка:

/tmp/ccLltmwf.o(.text+0x160): In function `main':
: undefined reference to `pthread_join'
collect2: ld returned 1 exit status


Вопрос: ПОЧЕМУ появляется ошибка?

PM MAIL   Вверх
MAKCim
Дата 23.6.2007, 14:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 84
Всего: 207



Цитата(Apacho @  23.6.2007,  14:22 Найти цитируемый пост)
Вопрос: ПОЧЕМУ появляется ошибка?

потому что надо подключить библиотеку pthread
Код

gcc ... -lpthread



--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
Apacho
Дата 30.6.2007, 09:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 28.9.2006
Где: Россия

Репутация: нет
Всего: нет



Какие библиотеки надо подключить, чтобы заработала прога (где кто-нибудь будет вводить что-нибудь(функция cin) и одновременно будет идти таймер) которую написал MAKCim
PM MAIL   Вверх
MAKCim
Дата 30.6.2007, 09:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 84
Всего: 207



Цитата(Apacho @  30.6.2007,  09:38 Найти цитируемый пост)
Какие библиотеки надо подключить, чтобы заработала прога (где кто-нибудь будет вводить что-нибудь(функция cin) и одновременно будет идти таймер) которую написал MAKCim 

1. Подключать -lpthread
2. cin - это не функция
3. У меня чтение идет через scanf()
4. Что значит будет идти таймер?


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Программирование под Unix/Linux"
xvr
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой "Код".
  • Вопросы мобильной разработки тут
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr.

 
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема »


 




[ Время генерации скрипта: 0.1111 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.