#include <Windows.h>
#include <process.h>
#include <stdio.h>
#include <fstream>
#include <iostream>
#include <conio.h>
using namespace std;
ofstream myfile;
unsigned int __stdcall mythreadA(void* data)
{
for (int i = 0; i < 1000000; i++)
{
myfile << "aa";
myfile << i;
myfile << "\n";
}
return 0;
}
int main(int argc, char* argv[])
{
myfile.open ("report.txt");
HANDLE myhandleA, myhandleB,myhandleC;
myhandleA = (HANDLE)_beginthreadex(0, 0, &mythreadA, 0, 0, 0);
myhandleB = (HANDLE)_beginthreadex(0, 0, &mythreadA, 0, 0, 0);
myhandleC = (HANDLE)_beginthreadex(0, 0, &mythreadA, 0, 0, 0);
getchar();
myfile.close();
return 0;
}
если мы запустим эту программу в microsoft visual studio, она создаст файл «отчет», а затем три потока попытаются записать в него число от 1 до 1000000. но из-за одновременного запуска трех потоков числа записываются в файл нерегулярно. Есть способы, такие как мьютекс и …, чтобы решить эту проблему, но я хочу использовать только инструкцию по сборке «TSL». Я хочу, чтобы эти потоки запускались друг за другом и решали это с помощью инструкции «TSL», а не другими способами.
В многопоточной среде лучше использовать заблокированные и вы избегаете добавления файлов .asm в основном для кода x64.
Других решений пока нет …