Здравствуйте.
Как обойти busy-waiting на C++?
Вот код:
bool checkPass(string bla)
{
if (bla != pass)
return false;
return true;
}
char nextSymbol(int Number)
{
char symbol;
if (Number <= 3)
symbol = Number + 35;
if (Number >= 4 && Number <= 13)
symbol = Number + 44;
if (Number >= 14 && Number <= 39)
symbol = Number + 51;
if (Number >= 40 && Number <= 65)
symbol = Number + 57;
if (Number == 66)
symbol = 64;
return symbol;
}
bool addThread = true;
bool Authentificated = false;
bool checkPassword=false;
bool Variable[32];
int numOfThreads = 0;
string someThing ="";
string ScheckPassword = "";
string return_value="";
thread* threads;
void brute(int myID)
{
while (!Authentificated)
{
while (!(Variable[myID]))
{
Sleep(50);
}
int symbol = 0;
while (symbol < 67)
{
someThing[myID] = nextSymbol(symbol);
checkPassword = true;
while (checkPassword)
{
Sleep(25);
if (Authentificated) {
return;
}
}
if (Authentificated)
{return;}
if (myID < numOfThreads - 1)
{
Variable[myID] = false;/*Sleep*/
Variable[myID + 1] = true;/*Wake up*/
while (!(Variable[myID]))
{
Sleep(50);
}
}
symbol++;
}
if (myID == 0)
addThread = true;
else
{
Variable[myID] = false;
Variable[myID - 1] = true;/*Wake UP*/
}
}
}
void multiThreadBruteForce()
{
bool end=false;
while (!end)
{
if (addThread && numOfThreads<32)
{
someThing += " ";
Variable[numOfThreads] = true;
threads[numOfThreads] = thread(brute, numOfThreads);
numOfThreads++;
addThread = false;
}
if (checkPassword)
{
ScheckPassword = someThing;
if (checkPass(ScheckPassword)) {
for (int i = 0; i <= numOfThreads; i++)
threads[i].detach();
Authentificated = true;
return_value = ScheckPassword;
checkPassword = false;
return;
}
checkPassword = false;
}
}
}
Вместо структуры
while()
{
Sleep();
}
Сделать что-то эффективней.
Ничего путного пока не нашел.
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости