Borland C++ 5.02 中使用第三方头文件的多线程
Multi threading with 3rd party headerfiles in Borland C++ 5.02
是否有任何头文件或扩展名可用于在Borland 5.02上制作多线程?
我想制作一个程序,使两条线以不同的速度进行动画处理,在一个无限循环中。 像这样的东西
#include <iostream.h>
#include <conio.h>
#include <windows.h>
#include<dos.h>
void linesmov(int seconds);
main()
{
// Thread 1
linesmov(5);
//Thread 2
linesmov(30);
}
void linesmov(int mseconds){
int i=0;
while (true){
i=i+1;
clrscr(); // Or system("cls"); If you may...
gotoxy(i,15); cout << "____||____||____";
Sleep(mseconds);
if (i>115){ i=0; }
}
}
是的。。我知道人们会去说,得到一个新的编译器,我的学校使用旧的编译器作为评分的"标准",所以请耐心等待。
Hans Boehm写了一篇著名的论文来解释为什么这是一个坏主意:线程不能作为库实现。
简而言之,如果你想做多线程编程,你需要一种语言和一个编译器,在线程安全方面提供一定的保证。如果你没有这个,你最终会遇到非常奇怪和难以理解的错误。
顺便说一下,这是 C++11 引入的线程支持如此重要的主要原因之一:仅仅使用库是不够的,您实际上还需要语言的适当支持。
由于Borland C++不提供这些保证,因此在将其用于多线程编程时,不要指望它会带您走得很远。
您的代码正在使用 windows.h
,这意味着您可以访问 Win32 API。因此,请查看Win32 CreateThread()
功能。
所以我终于找到了一种方法来做到这一点。
#include <Windows.h>
#include <stdio.h>
#include<dos.h>
#include<iostream.h>
#include<conio.h>
void linesmov(int mseconds,int y);
void linesmov(int mseconds,int y){
int i=0;
while (true){
i=i+1;
// Or system("cls"); If you may...
gotoxy(i,y); cout << "____||____||____"; gotoxy(i-1,y);cout << " ";
Sleep(mseconds);
if (i>115){ i=0; for(int o=0;o<100;o++){gotoxy(0,y); cout << " ";}}
}
}
DWORD WINAPI mythread1(LPVOID lpParameter)
{
printf("Thread inside %d n", GetCurrentThreadId());
linesmov(5,10);
return 0;
}
DWORD WINAPI mythread2(LPVOID lpParameter)
{
printf("Thread inside %d n", GetCurrentThreadId());
linesmov(30,15);
return 0;
}
int main(int argc, char* argv[])
{
HANDLE myhandle1;
DWORD mythreadid1;
HANDLE myhandle2;
DWORD mythreadid2;
myhandle1 = CreateThread(0,0,mythread1,0,0,&mythreadid1);
myhandle2 = CreateThread(0,0,mythread2,0,0,&mythreadid2);
printf("Thread after %d n", mythreadid1);
getchar();
return 0;
}
干的好!
相关文章:
- 如何调试visual studio 2017生成的C++代码.android中的SO文件和其他第三方库
- 如何将第三方 dll、标头和库文件与 Node N-API 一起使用
- CMakelists.txt用于C 项目中的第三方C文件
- 在Linux上使用Cmake时,我该如何告诉PVS-Studio忽略第三方库中的所有文件
- Borland C++ 5.02 中使用第三方头文件的多线程
- 将第三方库与程序可执行文件分开
- 将第三方头文件与 Rcpp 一起使用
- 隐藏第三方C++头文件的内容
- 在swig.i文件中,如何为基于mfc的第三方dll解析ms-windows-vc++typedef类型
- 将第三方模块的控制台输出/错误重定向到日志文件
- C++第三方库包含不存在的头文件
- 在源代码树中放置第三方头文件的位置
- 获取第三方点击一次应用程序的配置文件夹
- 当向第三方提供库时,C++include文件是否属于安全漏洞
- 用于第三方API的c++ #include -永远找不到一些头文件
- 如何禁止其他开发人员在c++中包含第三方头文件
- 如果我对头文件做了一个小的改变,我需要重新编译第三方库吗?
- 在Qt中使用第三方dll(没有.lib文件可用)
- 调用第三方可执行文件时调试分段错误
- 与第三方头文件相关的C++Builder歧义错误