Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
про потоки и Synchronize
|
|||
|---|---|---|---|
|
#18+
может уже мозги в конце рабочего дня плавятся, но я не уверен в столь простой вещи как то: Один поток вызывает метод: MyObj.Method1; // (внутри идет запись в некий глобальный обект Х) другой поток (т.е. возможно ОДНОВРЕМЕННО(!) с 1-м) вызывает другий метод того же обекта: Synchronize( MyObj.Method2 ) ; // (внутри идет запись в тот же самый глобальный объект Х) Будет ли вызов Метода2 ждать завершения выполнения Метода1 (из-за Synchronize) или потоки могут таки столкнутся на почве обьекта Х !? (судя по симптомам похоже так и проиcxодит...) P.S. Код этого бреда не мой ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2003, 19:45 |
|
||
|
про потоки и Synchronize
|
|||
|---|---|---|---|
|
#18+
проще всего раздели критическими секциями и не парься ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2003, 03:20 |
|
||
|
про потоки и Synchronize
|
|||
|---|---|---|---|
|
#18+
Это зависит от того, является ли первый поток - потоком GUI (главным). Если да, то Method1 и Method2 гарантировано будут исполнены строго последовательно (а вот кто первый, а кто второй - уверенности нет). Если же нет, то все возможно. Критические секции - самое правильное решение, если первый поток не является потоком GUI. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2003, 11:33 |
|
||
|
про потоки и Synchronize
|
|||
|---|---|---|---|
|
#18+
WaitForSingleObject ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2003, 11:48 |
|
||
|
про потоки и Synchronize
|
|||
|---|---|---|---|
|
#18+
Dankov А почему считаешь что с главным потоком так синхронизироваться нельзя? Помойму так никакого криминала. Единственное, под критической секцией не должно быть слишком долгого по исполнению кода, дабы второй поток не притормозил слишком сильно главный и все... или есть еще какие-то проблемы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2003, 11:49 |
|
||
|
про потоки и Synchronize
|
|||
|---|---|---|---|
|
#18+
Speaker сигналы, семафоры, мьютексы работают медленнее чем критические секции ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2003, 11:56 |
|
||
|
про потоки и Synchronize
|
|||
|---|---|---|---|
|
#18+
StarWind, Да, согласен. Действительно, в этом случае, наверное, более полезно использовать критические секции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2003, 12:06 |
|
||
|
про потоки и Synchronize
|
|||
|---|---|---|---|
|
#18+
А почему считаешь что с главным потоком так синхронизироваться нельзя? Помойму так никакого криминала. Единственное, под критической секцией не должно быть слишком долгого по исполнению кода, дабы второй поток не притормозил слишком сильно главный и все... или есть еще какие-то проблемы? Я не говорил, что нельзя. Я говорил "лучше". Это разные вещи. С главным потоком синхронизироваться лучше через Syncronize, хотя это и медленнее. Причина проста - с главным потоком синхронизируются, в основном, для операций над видимыми контролами, а оперирование контролами из другого потока может произвести глюки. Метод, который выполняется через Syncronize, на самом деле исполняется в контексте главного потока, поэтому вышеупомянутых глюков случиться не должно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2003, 12:10 |
|
||
|
про потоки и Synchronize
|
|||
|---|---|---|---|
|
#18+
какие глюки, если с окном работа ведется в одном потоке?\r я тут создал топик вчера, если интересно, то присоеденяйся ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2003, 03:38 |
|
||
|
про потоки и Synchronize
|
|||
|---|---|---|---|
|
#18+
какие глюки, если с окном работа ведется в одном потоке? Если в одном потоке, то проблем нет, но мы же обсуждаем синхронизацию 2-х как минимум потоков. Давай рассмотрим такую ситуацию. Вот засинхронизировал метод1 и метод2 у контрола, созданного в потоке GUI, через критические сессии. Но кроме этих 2-х методов, есть еще оконнная функция, которая реагирует на виндовые сообщения, и крутится эта функция в вечном цикле в основном потоке. Вот ты из другого потока управляешь этим контролом через метод2. А в этот момент оконная фукция получает WM_PASTE или WM_MOVE или еще чего-нибудь. Это будет исполнено параллельно с методом2, так как, я больше чем уверен, поставить критическую сессию еще и в в оконную функцию ты не догадался (во всяком случае никто так не делает, ибо это чрезмерно). Скорее всего , проблем не возникнет. Но вдруг, обработка сообщения вступит в конфликт с методом2 (типа обращение к одному ресурсу, который должен быть использован монопольно)? Тогда вот и могут быть глюки. Поэтому, Syncronize, в данном случае предпочтительнее, так как с ним такие проблемы исключены. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2003, 09:20 |
|
||
|
про потоки и Synchronize
|
|||
|---|---|---|---|
|
#18+
Dankov начнем с того что догадался :) вот пока как прикрутить к оконной функции так чтоб не было много и непонятно написано, пока не знаю... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2003, 10:08 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=32260972&tid=2116937]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
48ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
33ms |
get tp. blocked users: |
1ms |
| others: | 243ms |
| total: | 357ms |

| 0 / 0 |
