Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Linux: C++, GUI, thread
|
|||
|---|---|---|---|
|
#18+
Alex_KaПросто с потоками разобрался кажется. Теперь задача посложнее будет. Надо сделать потоки-классы(как в java) на c++ под линукс. Итак, надо чтобы в основном потоке были 2-е функции которые позволяют основному и рабочим потокам изменять и читать состояние некого объекта(obj) - для этого надо сделать эти функции(или часть кода в них) потокобезопасными, возникают 2 вопроса: 1. как пользоваться мутексами для этого? (или нужно что-то другое?) 2. как написать класс поток? (если это возможно?) //желательно чтобы рабочие потоки ничего не делали пока ожидают смены состояния объекта obj и чтобы основной поток мог уведомить рабочие потоки при смене статуса объекта obj. и еще вопрос, можно-ли в потоке-классе написать функцию которая будет callback если да то как например при наличии 1000 объектов-потоков будет вызываться нужная функция сторонним приложением? вообще-то в с++ все классы для этого уже есть. ссылку тебе уже дали. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2015, 07:51 |
|
||
|
Linux: C++, GUI, thread
|
|||
|---|---|---|---|
|
#18+
За ссылку спасибо. как "выполнить функцию" в потоке понятно, а вот как свой класс-поток создать еще нет, так что пока разбираюсь если кто поделился бы примером то было бы очень кстати. И вопрос про callback функции остается, можно-ли сделать так чтобы стороннее приложение вызывало функцию объекта? (не просто функцию и не статическую функцию) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2015, 19:45 |
|
||
|
Linux: C++, GUI, thread
|
|||
|---|---|---|---|
|
#18+
Alex_Kaкак свой класс-поток создать еще нет И не будет. Потому что не бывает в природе "класс-потоков". Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2015, 19:52 |
|
||
|
Linux: C++, GUI, thread
|
|||
|---|---|---|---|
|
#18+
Alex_KaЗа ссылку спасибо. как "выполнить функцию" в потоке понятно, а вот как свой класс-поток создать еще нет, так что пока разбираюсь если кто поделился бы примером то было бы очень кстати. Что ты понимаешь под "класс-поток" ? Поток это функция, как завершилась - так завершился поток. Если вопрос стоит как работать с объектом в отдельном потоке, то передаешь указатель на объект в параметрах. Alex_KaИ вопрос про callback функции остается, можно-ли сделать так чтобы стороннее приложение вызывало функцию объекта? (не просто функцию и не статическую функцию) Что значит "стороннее приложение" ? Поконкретнее распиши что там у тебя происходит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2015, 20:00 |
|
||
|
Linux: C++, GUI, thread
|
|||
|---|---|---|---|
|
#18+
Alex_KaИ вопрос про callback функции остается, можно-ли сделать так чтобы стороннее приложение вызывало функцию объекта? (не просто функцию и не статическую функцию) Что такое стороннее приложение не знаю, но колбэк из объектной функции создается и вызывается так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. И естественно, если вы передаете колбэк в поток, то вы должны гарантировать что объект для которого он вызывается будет существовать в момент вызова из потока. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2015, 22:44 |
|
||
|
Linux: C++, GUI, thread
|
|||
|---|---|---|---|
|
#18+
спасибо за ответы. вот еще вопросы возникли, создаю я класс(примерно такой): Код: 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. Код: 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. как мне сделать стобы функция runner() вызывалась в потоке? пытаюсь так, но не получается(ошибка: нет подходящей функции для вызова...) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. надо ли мне в деструкторе освобождать память? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2016, 17:56 |
|
||
|
Linux: C++, GUI, thread
|
|||
|---|---|---|---|
|
#18+
Alex_Kaнадо ли мне в деструкторе освобождать память?Восходит ли солнце на востоке? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2016, 18:12 |
|
||
|
Linux: C++, GUI, thread
|
|||
|---|---|---|---|
|
#18+
:) а как мне тут: std::thread myThread(userDataWorker.runner ); правильно вызвать мою функцию в потоке? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2016, 18:16 |
|
||
|
Linux: C++, GUI, thread
|
|||
|---|---|---|---|
|
#18+
Alex_Ka:) а как мне тут: std::thread myThread(userDataWorker.runner ); правильно вызвать мою функцию в потоке? http://en.cppreference.com/w/cpp/thread/thread/thread ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2016, 18:23 |
|
||
|
Linux: C++, GUI, thread
|
|||
|---|---|---|---|
|
#18+
Код: 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. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. Вот мой тестовый код, он рабочий, но по нему есть вопросы, ответьте кто знает плс. : 1. при вызове stop_thread из основного потока переменная stopThread не изменяется, хотя объявлена volatile почему? как сделать чтобы она изменялать? только через указатели? 2. как мне правильно освобождать память в деструкторе? 3. как мне использовать статическую переменную для подсчета созданных объектов? и вобще статические переменные как им задавать значения кроме конструктора? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2016, 18:29 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=39142064&tid=2018643]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
73ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
43ms |
get tp. blocked users: |
1ms |
| others: | 263ms |
| total: | 422ms |

| 0 / 0 |
