在Borland C ++ 5.02中使用第三方头文件进行多线程处理

时间:2018-03-20 06:20:40

标签: c++ windows multithreading console-application borland-c++

是否有任何头文件或扩展程序可用于在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;  }
}

}

是的..我知道人们会去说,获得一个新的编译器, 我的学校使用旧的编译器作为评分的“标准”,所以请耐心等待。

3 个答案:

答案 0 :(得分:0)

您的代码正在使用windows.h,这意味着您可以访问Win32 API。那么看看Win32 CreateThread()函数。

答案 1 :(得分:0)

所以我终于找到了一种方法来做到这一点。

#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;
}

干得好!

答案 2 :(得分:0)

汉斯·伯姆(Hans Boehm)写了一篇着名论文,说明为什么这是一个坏主意:Threads cannot be implemented as a library

简而言之,如果您想进行多线程编程,则需要一种语言和编译器,以提供有关线程安全性的某些保证。如果你没有这个,你最终会遇到非常奇怪和难以理解的错误。

顺便说一下,为什么使用C ++ 11引入线程支持的主要原因之一就是如此:仅仅使用库是不够的,你实际上也需要语言的适当支持。

由于Borland C ++没有给出这些保证,所以当使用它进行多线程编程时,不要指望它能带你走得太远。