Сообщение Re[7]: Windows 10? от 14.10.2014 17:04
Изменено 14.10.2014 17:06 ononim
S>>Здравствуйте, ononim, Вы писали:
O>>>Удобно же — как иначе копировать динамически обновляемый текст?
S>>Блокировать текст, а не приложение.
O>Ну так и блокируется то вывод текста приложением, а не приложение. Никто не мешает приложению чтонить считать в специальном потоке, ничего не выводя.
Несогласные могут сами написать простой тест:
Если текст не выделять — пищит разными частотами, если выделять — только более высоким тоном, потому что printf подвисает в недрах kernel32!WriteConsoleInternal (что легко увидеть при помощи дебаггера) что блокирует _только_ тред main'а.
O>>>Удобно же — как иначе копировать динамически обновляемый текст?
S>>Блокировать текст, а не приложение.
O>Ну так и блокируется то вывод текста приложением, а не приложение. Никто не мешает приложению чтонить считать в специальном потоке, ничего не выводя.
Несогласные могут сами написать простой тест:
#include <process.h>
#include <windows.h>
void __cdecl beep_only_thread(void *)
{
for (;;)
{
Beep(1000, 200);
Sleep(1000);
}
}
int main(int argc, char* argv[])
{
unsigned int i;
_beginthread(beep_only_thread, 0, 0);
for ( i = 0;;++i)
{
printf("Hello %d!\n", i);
Beep(300, 200);
Sleep(1000);
}
return 0;
}Если текст не выделять — пищит разными частотами, если выделять — только более высоким тоном, потому что printf подвисает в недрах kernel32!WriteConsoleInternal (что легко увидеть при помощи дебаггера) что блокирует _только_ тред main'а.
Re[7]: Windows 10?
S>>Здравствуйте, ononim, Вы писали:
O>>>Удобно же — как иначе копировать динамически обновляемый текст?
S>>Блокировать текст, а не приложение.
O>Ну так и блокируется то вывод текста приложением, а не приложение. Никто не мешает приложению чтонить считать в специальном потоке, ничего не выводя.
Несогласные могут сами написать простой тест:
Если текст не выделять — пищит разными частотами, если выделять — только более высоким тоном, потому что printf подвисает в недрах kernel32!WriteConsoleInternal (что легко увидеть при помощи дебаггера) что блокирует _только_ тред main'а. Так что если приложению во чтобы то ни стало требуется чтото делать, даже тогда когда юзер выделяет текст, который приложение понавыводило — у него есть способ это реализовать.
O>>>Удобно же — как иначе копировать динамически обновляемый текст?
S>>Блокировать текст, а не приложение.
O>Ну так и блокируется то вывод текста приложением, а не приложение. Никто не мешает приложению чтонить считать в специальном потоке, ничего не выводя.
Несогласные могут сами написать простой тест:
#include <process.h>
#include <windows.h>
void __cdecl beep_only_thread(void *)
{
for (;;)
{
Beep(1000, 200);
Sleep(1000);
}
}
int main(int argc, char* argv[])
{
unsigned int i;
_beginthread(beep_only_thread, 0, 0);
for ( i = 0;;++i)
{
printf("Hello %d!\n", i);
Beep(300, 200);
Sleep(1000);
}
return 0;
}Если текст не выделять — пищит разными частотами, если выделять — только более высоким тоном, потому что printf подвисает в недрах kernel32!WriteConsoleInternal (что легко увидеть при помощи дебаггера) что блокирует _только_ тред main'а. Так что если приложению во чтобы то ни стало требуется чтото делать, даже тогда когда юзер выделяет текст, который приложение понавыводило — у него есть способ это реализовать.