
Nikita
10.08.2018
07:46:42

yuri
10.08.2018
07:47:28
IIS же на фиберах. В смысле, найдутся любители.

Ilia
10.08.2018
07:47:30

Google

Nikita
10.08.2018
07:48:10

Nik
10.08.2018
07:48:14

Ilia
10.08.2018
07:50:26

Nikita
10.08.2018
07:52:29

Antony
10.08.2018
08:07:14

Stanislav
10.08.2018
08:09:15

Побитый
10.08.2018
08:37:10

Antony
10.08.2018
09:06:57
А почему такая строгость?
Ну потому что следующий шаг, это "Executors не приняли, потому что некий antoshkka@ сказал что предложение огромное, раздутое и не пользуется популярностью на не GPU вычислениях. А ещё...."
И тогда обсуждения скатятся в срач, а работа в комитете встанет :)

Alex Фэils?︙
10.08.2018
09:31:59

Roman
10.08.2018
09:39:53
2. Да, чекнул через GDIView, хватило, хотя вариант с xperf start -on PROC_THREAD+LOADER+OB_HANDLE+PROFILE -stackwalk Profile+HandleCreate+HandleClose+HandleDuplicate конечно пободрее.

Google

Roman
10.08.2018
09:41:12
DeviceContext всему виной оказался

Ilia
10.08.2018
09:41:28

Roman
10.08.2018
09:42:03

Alex Фэils?︙
10.08.2018
09:42:12

Roman
10.08.2018
09:42:34

Alex Фэils?︙
10.08.2018
09:42:57
Process Monitor
ru.wikipedia.org
Бесплатная утилита для 32-битных и 64-разрядных операционных систем Microsoft Windows, разработанная Sysinternals, и затем приобретённая Microsoft Corporation, которая объединила в себе сразу 2 утилиты, FileMon и RegMon, и предоставляет пользователям мощный инструмент для мониторинга файловой систем

Roman
10.08.2018
09:43:42
в общем не надо делать GetDC и после не вызывать ReleaseDC =)

Ilia
10.08.2018
09:43:56
Можно через procmon выдрать
Так надо выделение с освобождением сматчить, и удалить из рассмотрения те пары, где есть матч. А далее рассматривать те, что остались. И это порядка нескольких тысяч пар в приложении обычно.

Alex Фэils?︙
10.08.2018
09:44:46

Roman
10.08.2018
09:45:20

Ilia
10.08.2018
09:45:23

Roman
10.08.2018
09:45:36
а я оказался не прав=)

Ilia
10.08.2018
09:45:56

Roman
10.08.2018
09:46:24
Что думал обёртка MFC в виде CDC класса уже это делает.
собственно CDC Обёртка над HDC
и этот самый HDC надо удалять ручками, и как бы вроде бы логично чтобы обёртка этим занималась

Sasha
10.08.2018
09:47:21
Всем привет) Помогите
Кто-нибудь программировать на си контроллеры?

Google

Ilia
10.08.2018
09:47:37

Sasha
10.08.2018
09:47:43
Прогоаммировал*

Ilia
10.08.2018
09:48:45

Roman
10.08.2018
09:50:27
но потёк именно DC

Max
10.08.2018
10:20:09
https://imgur.com/ET8PNEh
Чё-то ору )

Timur
10.08.2018
11:01:16

Ilia
10.08.2018
11:51:20
Ребят, а кто-нибудь пользовался библиотекой NAG(Numerical Algorithms Group): https://www.nag.com ? Есть вопрос по использованию функций нахождения решений для PDE
А кто знает, что за такой хитрый зверь в VC с 2015 ой -- Concurrency Runtime?
The Concurrency Runtime for C++ helps you write robust, scalable, and responsive parallel applications. It raises the level of abstraction so that you do not have to manage the infrastructure details that are related to concurrency. You can also use it to specify scheduling policies that meet the quality of service demands of your applications. Use these resources to help you start working with the Concurrency Runtime.

Andrey
10.08.2018
12:55:29
Вроде это мидлваре на которой часть библиотеки PPL работает. Но они вроде потихоньку перетаскивают это дело в обычный рантайм
https://msdn.microsoft.com/en-us/library/ee207192.aspx

Ilia
10.08.2018
13:10:10

Andrey
10.08.2018
13:11:16
Ну насколько я понимаю тем что она более тесно "сотрудничает" с виндой. Опенсорсный PPL для никсов как раз на std::thread
Ну то есть видимо для винды лучше идти в конкаренси рантайм, а для портируемости лучше не заморачиваться и пользоваться стандартными средствами

Nik
10.08.2018
18:17:25

Sergey
10.08.2018
19:49:54
В PPL есть конкурентные структуры данных, не lock free, но тем не менее хорошие
В STL пока не завезли такого

Alexey
10.08.2018
20:42:28

Alexander
10.08.2018
20:42:55

Ilia
10.08.2018
21:01:03
У нас просто в нашем новом проекте это заюзали, вот я и думаю, к добру это или не к добру...

Google

Dmitry
10.08.2018
21:30:03

Nik
10.08.2018
21:51:36

Antony
11.08.2018
07:21:32

Дед Пегас
11.08.2018
10:55:32

Antony
11.08.2018
20:56:22

Alex Фэils?︙
11.08.2018
21:00:07
А почему вы отвечаете вопросом на вопрос?

Ignat
11.08.2018
21:09:21
а Вы таки антисемит?

Дед Пегас
11.08.2018
21:43:59


Alexandr
12.08.2018
05:56:04
Посонэ.
Задача така. Нужно выделить executable memory, запихать в нее простой helloworld, прочтенный с диска и выполнить.
Собстна. Когда я исполняю ассемблерный код, найденый в примере того, как это сделать - все нормально.
Но когда я пытаюсь выполнить helloworld, то вылазит сегфолт.
Это хелловорд
#include <iostream>
int main(int argc, char const *argv[]) {
std::cout << "Hello World!" << '\n';
return 0;
}Это то, что я пытаюсь сделать
#include <sys/mman.h>
#include <vector>
#include <fstream>
#include <iostream>
typedef unsigned (*asmFunc)(void);
int main(int argc, char *argv[])
{
std::streampos fileSize;
std::ifstream file("hw", std::ios::binary);
// get its size:
file.seekg(0, std::ios::end);
fileSize = file.tellg();
file.seekg(0, std::ios::beg);
// read the data:
std::vector<unsigned char> program(fileSize);
file.read((char*) &program[0], fileSize);
/*program.push_back(0xb8);
program.push_back(0x00);
program.push_back(0x11);
program.push_back(0xdd);
program.push_back(0xee);
program.push_back(0xc3);*/
std::cout << "Загрузка программы: " << "hw" << '\n';
std::cout << "Выделение исполняемой памяти в размере " << program.size() << '\n';
void * virtualCodeAddress = 0;
virtualCodeAddress = mmap(
NULL,
program.size(), //size in bytes
PROT_READ | PROT_WRITE | PROT_EXEC,
MAP_ANONYMOUS | MAP_PRIVATE,
0,
0
);
std::cout << "Аддрес: " << virtualCodeAddress << '\n';
std::cout << "Загрузка программы в исполняемую память: ";
unsigned char * tempCode = (unsigned char *) (virtualCodeAddress);
for (size_t i = 0; i < program.size(); i++) {
tempCode[i] = program[i];
}
std::cout << "Готово!" << '\n';
asmFunc myFunc = (asmFunc) (virtualCodeAddress);
std::cout << " ИСПОЛНЕНИЕ" << '\n';
unsigned out = myFunc();
std::cout << " ИСПОЛНЕНИЕ ЗАВЕРШЕНО " << '\n';
}Гуглить пробовал, не получилось


Mikhail Voronov
12.08.2018
06:16:42
Посонэ.
Задача така. Нужно выделить executable memory, запихать в нее простой helloworld, прочтенный с диска и выполнить.
Собстна. Когда я исполняю ассемблерный код, найденый в примере того, как это сделать - все нормально.
Но когда я пытаюсь выполнить helloworld, то вылазит сегфолт.
Это хелловорд
#include <iostream>
int main(int argc, char const *argv[]) {
std::cout << "Hello World!" << '\n';
return 0;
}Это то, что я пытаюсь сделать
#include <sys/mman.h>
#include <vector>
#include <fstream>
#include <iostream>
typedef unsigned (*asmFunc)(void);
int main(int argc, char *argv[])
{
std::streampos fileSize;
std::ifstream file("hw", std::ios::binary);
// get its size:
file.seekg(0, std::ios::end);
fileSize = file.tellg();
file.seekg(0, std::ios::beg);
// read the data:
std::vector<unsigned char> program(fileSize);
file.read((char*) &program[0], fileSize);
/*program.push_back(0xb8);
program.push_back(0x00);
program.push_back(0x11);
program.push_back(0xdd);
program.push_back(0xee);
program.push_back(0xc3);*/
std::cout << "Загрузка программы: " << "hw" << '\n';
std::cout << "Выделение исполняемой памяти в размере " << program.size() << '\n';
void * virtualCodeAddress = 0;
virtualCodeAddress = mmap(
NULL,
program.size(), //size in bytes
PROT_READ | PROT_WRITE | PROT_EXEC,
MAP_ANONYMOUS | MAP_PRIVATE,
0,
0
);
std::cout << "Аддрес: " << virtualCodeAddress << '\n';
std::cout << "Загрузка программы в исполняемую память: ";
unsigned char * tempCode = (unsigned char *) (virtualCodeAddress);
for (size_t i = 0; i < program.size(); i++) {
tempCode[i] = program[i];
}
std::cout << "Готово!" << '\n';
asmFunc myFunc = (asmFunc) (virtualCodeAddress);
std::cout << " ИСПОЛНЕНИЕ" << '\n';
unsigned out = myFunc();
std::cout << " ИСПОЛНЕНИЕ ЗАВЕРШЕНО " << '\n';
}Гуглить пробовал, не получилось
почитайте про PE/ELF форматы


Alexandr
12.08.2018
06:18:30
@voronovm thx

Max
12.08.2018
07:39:48
а почему нельзя то, что надо с диска прочитать и запустить оформить в виде .so/dll и подгрузить/запустить когда нужно ?


Kathu
12.08.2018
12:21:35
Посонэ.
Задача така. Нужно выделить executable memory, запихать в нее простой helloworld, прочтенный с диска и выполнить.
Собстна. Когда я исполняю ассемблерный код, найденый в примере того, как это сделать - все нормально.
Но когда я пытаюсь выполнить helloworld, то вылазит сегфолт.
Это хелловорд
#include <iostream>
int main(int argc, char const *argv[]) {
std::cout << "Hello World!" << '\n';
return 0;
}Это то, что я пытаюсь сделать
#include <sys/mman.h>
#include <vector>
#include <fstream>
#include <iostream>
typedef unsigned (*asmFunc)(void);
int main(int argc, char *argv[])
{
std::streampos fileSize;
std::ifstream file("hw", std::ios::binary);
// get its size:
file.seekg(0, std::ios::end);
fileSize = file.tellg();
file.seekg(0, std::ios::beg);
// read the data:
std::vector<unsigned char> program(fileSize);
file.read((char*) &program[0], fileSize);
/*program.push_back(0xb8);
program.push_back(0x00);
program.push_back(0x11);
program.push_back(0xdd);
program.push_back(0xee);
program.push_back(0xc3);*/
std::cout << "Загрузка программы: " << "hw" << '\n';
std::cout << "Выделение исполняемой памяти в размере " << program.size() << '\n';
void * virtualCodeAddress = 0;
virtualCodeAddress = mmap(
NULL,
program.size(), //size in bytes
PROT_READ | PROT_WRITE | PROT_EXEC,
MAP_ANONYMOUS | MAP_PRIVATE,
0,
0
);
std::cout << "Аддрес: " << virtualCodeAddress << '\n';
std::cout << "Загрузка программы в исполняемую память: ";
unsigned char * tempCode = (unsigned char *) (virtualCodeAddress);
for (size_t i = 0; i < program.size(); i++) {
tempCode[i] = program[i];
}
std::cout << "Готово!" << '\n';
asmFunc myFunc = (asmFunc) (virtualCodeAddress);
std::cout << " ИСПОЛНЕНИЕ" << '\n';
unsigned out = myFunc();
std::cout << " ИСПОЛНЕНИЕ ЗАВЕРШЕНО " << '\n';
}Гуглить пробовал, не получилось
хелло ворлд разве не должен быть в виде машинных команд чтобы его так в память подгружать? почитай что такое компиляция и линковка и как из текста программа превращается в исполняемый файл