@Recardo_Recoly

Как вызвать функции одного потока в другом?

Есть у меня приложение (игра аля GTA SA).
И в ее mainloop вклинил свою функцию (то есть получается один поток) Thread1
И есть еще поток созданный в DLL либе через метод _beginthread. Thread2
И вопрос вот в чем:
Как вызвать функцию класса (класс из потока Thread2) из потока Thread1 ?

То есть если вызвать метод класса созданного (точней говоря содержимое класса создано в Thread2 а сам класс статический) в Thread2 из потока Thread1 то будет краш (крашит содержимое метода (моя догадка немного провериная)).
Если вызвать этот же метод но из потока Thread2 то все будет работать.
Как сделать так чтобы можно было вызвать этот метод из Thread1 ?
  • Вопрос задан
  • 192 просмотра
Пригласить эксперта
Ответы на вопрос 2
Nipheris
@Nipheris Куратор тега C++
Вы не можете вызвать "функции одного потока в другом". Каждый поток должен сам вызвать то, что ему нужно.

Чтобы это реализовать, вы можете, к примеру, организовать циклы обработки сообщений и обмениваться сообщениями между потоками.

Более конкретно ответить можно только зная какими библиотеками и API вы пользуетесь в вашем проекте.
Ответ написан
@res2001
Developer, ex-admin
В общем случае никто не мешает вызывать одну и ту же функцию из разных потоков.
Я не в курсе реализации CALLBACK v8 JavaScript Engine. Если вы пытаетесь использовать функцию не стандартным образом, то вы должны соблюсти весь протокол ее использования.
Если есть доступ к исходникам попробуйте отладить функцию.
Скорее всего ошибка происходит уже внутри функции, возможно доступ за пределы выделенной памяти или по не верному указателю.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы