 |
|

29.10.2021, 16:43
|
|
Постоянный
Регистрация: 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
)
;
|
|
|

03.11.2021, 15:49
|
|
Постоянный
Регистрация: 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.
|
|
|

16.11.2021, 19:38
|
|
Флудер
Регистрация: 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

|
|
|

17.11.2021, 13:14
|
|
Постоянный
Регистрация: 29.05.2017
Сообщений: 394
С нами:
4714653
Репутация:
98
|
|
[QUOTE="kin4stat"]
хз зачем это может понадобиться, но как костыль:
C++:
[CODE]
for
(
auto
i
=
0u
;
i
|
|
|

17.11.2021, 13:48
|
|
Флудер
Регистрация: 06.11.2017
Сообщений: 2,759
С нами:
4483143
Репутация:
183
|
|
Сообщение от Ya Zaregalsya
Если память не подводит, то inline пробовал, но не сработало. Пришлось перенести эти функции в отдельный .cpp файл, а в .hpp оставить только объявление.
Попробуй обновить файлы с гитхаба
|
|
|

17.11.2021, 14:03
|
|
Постоянный
Регистрация: 29.05.2017
Сообщений: 394
С нами:
4714653
Репутация:
98
|
|
Сообщение от kin4stat
Попробуй обновить файлы с гитхаба
Завтра сяду за код, попробую такой вариант. Но вынос определения этих функций в отдельный .cpp файл помог, если что, всё работает идеально.
Сообщение от kin4stat
Попробуй обновить файлы с гитхаба
Теперь всё работает без дополнительного .cpp файла 👍
|
|
|

14.05.2022, 11:02
|
|
Познающий
Регистрация: 03.05.2016
Сообщений: 64
С нами:
5277893
Репутация:
56
|
|
Есть ли возможность вызвать co_await с другой функцией и при этом иметь ссылку на ktwait? Мне нужно ожидать выполнения другой функции, но при этом иметь возможность досрочно её завершить. Проблема в том что co_await не работает с ссылкой, а при передачи владения ссылка меняется.
|
|
|
|
 |
|
Предыдущая тема
Следующая тема
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|