Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
проверка на запуск потока
|
|||
|---|---|---|---|
|
#18+
Всем привет, вопрос такой, у меня есть поток допустим когда я его запускаю он работал, а вот когда второй раз я его запускаю он мне выдавал сообщений что поток уже работает, и не запускал программу! вот попробовал сделать так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. этот код я поставил в кнопку запуска потока но все равно как-то не ахти, подскажите пожалуйста как сделать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2012, 11:26 |
|
||
|
проверка на запуск потока
|
|||
|---|---|---|---|
|
#18+
spykerвсе равно как-то не ахти Не просто "не ахти", а "совершенно неработоспособно". Никаких "OpenMutex" - сразу делай "CreateMutex" и обрабатывай ошибку ERROR_ALREADY_EXISTS. И разберись, что тебе нужно "не запускал программу" или "поток". Поскольку предотвращать запуск программы в потоке несколько... странно. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2012, 11:41 |
|
||
|
проверка на запуск потока
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, я имею в виду то, чтоб 1 раз программу запустил - она работает, а потом хочешь еще раз экземпляр из папки дебага запустить, выдавалось сообщение о точ что программа уже запущена! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2012, 11:44 |
|
||
|
проверка на запуск потока
|
|||
|---|---|---|---|
|
#18+
т.е. вот так Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2012, 11:50 |
|
||
|
проверка на запуск потока
|
|||
|---|---|---|---|
|
#18+
Нихрена не понял. Тебе нужно, чтобы поток НЕ запускался дважды или наоборот запускался? Если надо контролировать повторный запуск, то достаточно взять описатель ранее созданного(ых) потока(ов) и проверить работает ли он. Код: plaintext 1. 2. 3. 4. 5. 6. 7. Если связываться с описателями не хочешь, то можно использовать какой-нибудь счетчик кол-ва запусков. Каждый раз, когда запускается новый поток счетчик увеличивается на 1. Когда поток завершает свою работу счетчик уменьшается на 1. Если счетчик = 0, то ни одного экземпляра потока не выполняется. Естественно придется предусмотреть механизм индивидуального доступа к счетчику, а так же вариант того, что поток может грохнутся и счетчик не будет уменьшен на 1. Одним словом, тут вариантов реализации до фига и больше. Если же ты хочешь чтобы поток запускался несколько раз, то здесь никаких проблем быть не должно, ведь потоки для этого и существуют, чтобы их запускали много раз, при условии, что ты сам не заблокировал доступ к этой возможности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2012, 12:05 |
|
||
|
проверка на запуск потока
|
|||
|---|---|---|---|
|
#18+
spykerDimitry Sibiryakov, я имею в виду то, чтоб 1 раз программу запустил - она работает, а потом хочешь еще раз экземпляр из папки дебага запустить, выдавалось сообщение о точ что программа уже запущена! Аааа, понял. Кто ж контролирует запуск процессов по потокам ? Улавливаешь разницу? Код: plaintext 1. 2. 3. 4. 5. Писать нужно то, что требуется, чтобы корректно завершить ненужный процесс, например, Код: plaintext 1. 2. 3. 4. 5. Кстати этот вариант не будет полным спасением от повторного запуска, у Рихтера есть пример с разделяемой секцией в exe файле, я бы подстраховался и прикрутил бы и ее до кучи ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2012, 12:17 |
|
||
|
проверка на запуск потока
|
|||
|---|---|---|---|
|
#18+
Cerebrum, а этот код нужно в потоке писать лучше? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2012, 12:29 |
|
||
|
проверка на запуск потока
|
|||
|---|---|---|---|
|
#18+
spykerCerebrum, а этот код нужно в потоке писать лучше? Какой код? Проверяющий существование мьютекса? Если да, то естественно в потоке, в первичном, в котором у тебя ф-ция main Вообще-то любой код всегда выполняется в потоке, процесс на пользовательском уровне - это абстракция. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2012, 12:51 |
|
||
|
проверка на запуск потока
|
|||
|---|---|---|---|
|
#18+
Cerebrum, если в первичном то кнопка старта типа void и она мне ретурн не вернет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2012, 13:06 |
|
||
|
проверка на запуск потока
|
|||
|---|---|---|---|
|
#18+
spykerCerebrum, если в первичном то кнопка старта типа void и она мне ретурн не вернет это был всего лишь пример, потому что из твоего вообще ничего не понятно: что, где, куда и как. cделай так Код: plaintext 1. 2. 3. 4. если для тебя это принципиально ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2012, 13:21 |
|
||
|
проверка на запуск потока
|
|||
|---|---|---|---|
|
#18+
Cerebrum, ну вот смотри: поток таков: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. кнопка старта: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. вот так вот чтоли сделать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2012, 13:48 |
|
||
|
проверка на запуск потока
|
|||
|---|---|---|---|
|
#18+
spykerа этот код нужно в потоке писать лучше? Нет, этот код нужно писать прямо в начале функции WinMain(). Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2012, 14:32 |
|
||
|
проверка на запуск потока
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, в какой главной функции winmain() вот это не пойму ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2012, 14:44 |
|
||
|
проверка на запуск потока
|
|||
|---|---|---|---|
|
#18+
ну так и ничего не происходить, повторно приложения запускаются ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2012, 14:47 |
|
||
|
проверка на запуск потока
|
|||
|---|---|---|---|
|
#18+
В рот мне ноги, что это ? Так. Давай с начала. Как я понял поставленную задачу: 1. Есть программа, которая при нажатии на кнопку должна запустить поток (ThreadA). 2. Поток ThreadA должен проверить НЕ запущен ли уже другой аналогичный поток. 3. Если аналогичный поток запущен, то поток ThreadA завершает свою работу. 4. Если аналогичный поток НЕ запущен, ThreadA запускается создает объект мьютекс и поток делает то, что должен. Я правильно понял твою задачу? Если да, то Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2012, 15:18 |
|
||
|
проверка на запуск потока
|
|||
|---|---|---|---|
|
#18+
Cerebrum, немного не так 1. есть поток thread 2. я его запускаю 3. при запущенном потоке я иду в дебаг и запускаю grafic1.exe(как только я его запущу, у меня должно выжаться сообщение что поток запущен и не запускать приложение) вот как бы так ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2012, 15:55 |
|
||
|
проверка на запуск потока
|
|||
|---|---|---|---|
|
#18+
spykerв какой главной функции winmain() вот это не пойму Есть только одна главная функция WinMain. Нажми F1 и прочитай. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2012, 16:08 |
|
||
|
проверка на запуск потока
|
|||
|---|---|---|---|
|
#18+
spyker, Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2012, 18:14 |
|
||
|
проверка на запуск потока
|
|||
|---|---|---|---|
|
#18+
Cerebrum, ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2012, 18:50 |
|
||
|
проверка на запуск потока
|
|||
|---|---|---|---|
|
#18+
похоже на обработчик исключений, а почему вместо catch -> __finally ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2012, 18:51 |
|
||
|
проверка на запуск потока
|
|||
|---|---|---|---|
|
#18+
spykerпохоже на обработчик исключений, а почему вместо catch -> __finally Чтобы счетчик отматывать, тынц ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2012, 18:55 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=38007187&tid=2020734]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
177ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
| others: | 16ms |
| total: | 296ms |

| 0 / 0 |
