Автор Тема: Функция CreateThread  (Прочитано 12573 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Ganibal95 [?]

  • GreenBytes
  • AutoIt Гуру
  • *****
  • Сообщений: 875
  • Репутация: 237
  • Пол: Мужской
  • GreenBytes
    • GreenBytes
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: Функция CreateThread
« Ответ #15, Отправлен: Ноябрь 16, 2011, 21:10:03 »
Тогда как можно запустить функцию, и как ее сделать?  :)


Добавлено: Ноябрь 16, 2011, 21:31:44
Yashied,
Небольшие вопросы:
1.Что за бинарный код используется для создания потока и как его создать?
2.Как сделать вызов?
« Последнее редактирование: Ноябрь 16, 2011, 21:31:44 от Ganibal95, Причина: Объединение сообщений »

Русское сообщество AutoIt

Re: Функция CreateThread
« Ответ #15 Отправлен: Ноябрь 16, 2011, 21:10:03 »

Оффлайн Ganibal95 [?]

  • GreenBytes
  • AutoIt Гуру
  • *****
  • Сообщений: 875
  • Репутация: 237
  • Пол: Мужской
  • GreenBytes
    • GreenBytes
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: Функция CreateThread
« Ответ #16, Отправлен: Май 06, 2012, 17:18:27 »
все еще жду ответы на вопросы.  :)

Оффлайн Medic84 [?]

  • Администратор
  • *
  • Сообщений: 1416
  • Репутация: 303
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: Функция CreateThread
« Ответ #17, Отправлен: Май 07, 2012, 22:16:31 »
Ganibal95
Какже ты не поймешь, что НЕЛЬЗЯ создать управляемый асинхронный(синхронный) поток в AutoIT.
Ну нету у него поддержки данных функций. Даже функции Adlib приостанавливают основной цикл программы.

Вот в C++ это сделать очень просто. Есть встроенная функция _beginthread которая создает асинхронный поток.

   
На форуме принято отмечать полезные сообщения пальцем вверх =)
Никогда не даю подробных примеров сразу, я сначала навожу на мысль - как можно написать. Учитесь мыслить сами, а не за других людей.

Оффлайн Yashied [?]

  • AutoIt MVP
  • Глобальный модератор
  • *
  • Сообщений: 5379
  • Репутация: 2696
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.x.x
Re: Функция CreateThread
« Ответ #18, Отправлен: Май 07, 2012, 22:39:04 »
Проблема в том, что менеджер памяти (?) в AutoIt изначально не писался для мультипотоковых приложений. Поэтому любая попытка запустить дополнительный поток в рамках DllCallRegister() чревата непредсказуемыми последствиями (в большинстве случаев крахом процесса). Другими словами, функция потока не может использовать внутренние функции AutoIt. Единственный способ запустить дополнительный поток, это написание .dll на другом ЯП, поддерживающим мультипоточность, например Pure Basic. Как вариант, можно написать функцию потока непосредственно в машинном коде aka ассемблер. тем самым обойтись без .dll. Простой пример см. здесь. На этом, думаю, вопрос исчерпан.

Тема закрыта.


Думай, прежде чем говорить.

Русское сообщество AutoIt

Re: Функция CreateThread
« Ответ #18 Отправлен: Май 07, 2012, 22:39:04 »

 

Похожие темы

  Тема / Автор Ответов Последний ответ
7 Ответов
8511 Просмотров
Последний ответ Сентябрь 24, 2011, 14:36:33
от mazay
8 Ответов
6529 Просмотров
Последний ответ Февраль 09, 2012, 11:31:08
от CreatoR
7 Ответов
4619 Просмотров
Последний ответ Июль 22, 2010, 18:53:31
от Yashied
13 Ответов
6132 Просмотров
Последний ответ Декабрь 31, 2010, 00:54:22
от CreatoR
1 Ответов
3429 Просмотров
Последний ответ Декабрь 01, 2012, 06:07:32
от madmasles
9 Ответов
3148 Просмотров
Последний ответ Март 07, 2013, 00:33:19
от Delikanov
6 Ответов
2193 Просмотров
Последний ответ Апрель 14, 2013, 10:01:40
от dimid
19 Ответов
5345 Просмотров
Последний ответ Июль 16, 2013, 03:12:06
от Se7enstars
18 Ответов
4145 Просмотров
Последний ответ Июнь 19, 2014, 23:36:39
от Garrett
8 Ответов
2249 Просмотров
Последний ответ Июнь 30, 2014, 13:50:56
от Vovsla