HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #11  
Старый 29.10.2021, 16:43
Ya Zaregalsya
Постоянный
Регистрация: 29.05.2017
Сообщений: 394
С нами: 4714653

Репутация: 98
По умолчанию

add_task() будет работать с лямбда функциями?

Такая проблема, заголовочный файл обсыпан ошибками, мол std не содержит никаких корутинов. Что можно сделать в такой ситуации?




UPD: Исправил ошибку. Нужно было перейти на самый свежий стандарт языка.

Лямбды на месте 👍

C++:





Код:
tasklist
.
add_task
(
[
]
(
int
first
,
bool
second
)
->
ktwait
{
using
namespace
std
::
chrono_literals
;
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
-
1
,
"#1 First: %i; Second: %d;"
,
first
,
second
)
;
co_await
5
s
;
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
-
1
,
"#2 First: %i; Second: %d;"
,
first
,
second
)
;
}
,
3
,
true
)
;
 
Ответить с цитированием

  #12  
Старый 03.11.2021, 15:49
Ya Zaregalsya
Постоянный
Регистрация: 29.05.2017
Сообщений: 394
С нами: 4714653

Репутация: 98
По умолчанию

Удобная либа. Лямбды делаются легко. Возник только такой вопрос, можно ли как-то уйти ото всех этих секунд и миллисекунд, и работать чисто по кол-ву вызовов process()? Например, продолжить выполнение через 10 циклов вызовов process(). Сделал два tasklist, один вызывается в потоке, другой в хуке на рендер, чтобы один вызывать по времени, а другой по кадрам. Но если передавать в co_await обычное число, то размер этого числа ни на что не влияет:

C++:





Код:
#pragma once
#include "SAMPFUNCS_API.h"
#include "game_api.h"
#include 
#include "ktcoro_wait.hpp"
extern
SAMPFUNCS
*
SF
;
extern
ktcoro_tasklist threadTask
;
extern
ktcoro_tasklist presentTask
;
namespace
examples
{
void
testktcoro
(
)
{
SF
->
getSAMP
(
)
->
registerChatCommand
(
"testktcoro"
,
[
]
(
std
::
string param
)
->
void
{
threadTask
.
add_task
(
[
]
(
)
->
ktwait
{
while
(
true
)
{
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
-
1
,
"threadTask"
)
;
co_await
1
;
}
}
)
;
presentTask
.
add_task
(
[
]
(
)
->
ktwait
{
while
(
true
)
{
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
-
1
,
"presentTask"
)
;
co_await
1
;
}
}
)
;
}
)
;
}
}




Компилятор жалуется на либу за повторное включение, несмотря на #pragma once во всех файлах проекта. Конкретно на функции remove_task и remove_task_recursively.
 
Ответить с цитированием

  #13  
Старый 16.11.2021, 19:38
kin4stat
Флудер
Регистрация: 06.11.2017
Сообщений: 2,759
С нами: 4483143

Репутация: 183


По умолчанию

Цитата:
Сообщение от Ya Zaregalsya  

Например, продолжить выполнение через 10 циклов вызовов process()
хз зачем это может понадобиться, но как костыль:

C++:





[CODE]
for
(
auto
i
=
0u
;
i



Да-да умею отвечать вовремя

Цитата:
Сообщение от Ya Zaregalsya  

Компилятор жалуется на либу за повторное включение, несмотря на #pragma once во всех файлах проекта. Конкретно на функции remove_task и remove_task_recursively.
Попробуй вот эти две функции отметить как inline

 
Ответить с цитированием

  #14  
Старый 17.11.2021, 13:14
Ya Zaregalsya
Постоянный
Регистрация: 29.05.2017
Сообщений: 394
С нами: 4714653

Репутация: 98
По умолчанию

[QUOTE="kin4stat"]

хз зачем это может понадобиться, но как костыль:

C++:





[CODE]
for
(
auto
i
=
0u
;
i
 
Ответить с цитированием

  #15  
Старый 17.11.2021, 13:48
kin4stat
Флудер
Регистрация: 06.11.2017
Сообщений: 2,759
С нами: 4483143

Репутация: 183


По умолчанию

Цитата:
Сообщение от Ya Zaregalsya  

Если память не подводит, то inline пробовал, но не сработало. Пришлось перенести эти функции в отдельный .cpp файл, а в .hpp оставить только объявление.
Попробуй обновить файлы с гитхаба
 
Ответить с цитированием

  #16  
Старый 17.11.2021, 14:03
Ya Zaregalsya
Постоянный
Регистрация: 29.05.2017
Сообщений: 394
С нами: 4714653

Репутация: 98
По умолчанию

Цитата:
Сообщение от kin4stat  

Попробуй обновить файлы с гитхаба
Завтра сяду за код, попробую такой вариант. Но вынос определения этих функций в отдельный .cpp файл помог, если что, всё работает идеально.

Цитата:
Сообщение от kin4stat  

Попробуй обновить файлы с гитхаба
Теперь всё работает без дополнительного .cpp файла 👍
 
Ответить с цитированием

  #17  
Старый 14.05.2022, 11:02
SKIC
Познающий
Регистрация: 03.05.2016
Сообщений: 64
С нами: 5277893

Репутация: 56
По умолчанию

Есть ли возможность вызвать co_await с другой функцией и при этом иметь ссылку на ktwait? Мне нужно ожидать выполнения другой функции, но при этом иметь возможность досрочно её завершить. Проблема в том что co_await не работает с ссылкой, а при передачи владения ссылка меняется.
 
Ответить с цитированием
Ответ



Предыдущая тема Следующая тема

Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.