Chào mọi người. Mình mới tìm hiều về đa luồng trong C++.Và bây giờ đang viết 1 chương trình minh họa chuyển động của trái đất và sao hỏa quanh mặt trời.
- Mặt trời là hình tròn lớn nhất luôn đứng yên
- Hai hình tròn nhỏ là trái đất và sao hỏa
- Mỗi hình tròn nhỏ mình sẽ dùng 1 thread để quản lý hoạt động của nó. Khi chạy từng thread thì chạy bình thường, nhưng khi chạy cả 2 thread thì nó vẫn chạy nhưng cái hình tròn lớn nhất thì không hiện ra nữa và các hình tròn nhỏ lúc thì hiện ra lúc thì không hiện ?? Mọi người cho em hỏi lỗi gì vậy ạ ! Cảm ơn mọi người
#include <graphics.h>
#include <iostream>
#include <math.h>
void *earth_2(void *){
initwindow(800,800);
circle(400,300,100);
setfillstyle(1,YELLOW);
floodfill(400,300,WHITE);
float x = 600;
float y = 300;
float alpha = M_PI/90;
float c = 0;
while(true){
setcolor(GREEN);
circle((int)x,(int)y,10);
setfillstyle(1,GREEN);
floodfill(x,y,GREEN);
delay(10);
setfillstyle(1,BLACK);
floodfill(x,y,BLACK);
setcolor(BLACK);
circle(x,y,10);
if(c == 360) c = 0;
c+=alpha;
x = 200 + 200 + 200*cos(c);
y = 100 + 200 + 200*sin(c);
}
}
void *yupiter_2(void *){
//initwindow(800,800);
//circle(400,300,100);
//setfillstyle(1,YELLOW);
//floodfill(400,300,WHITE);
float a = 550;
float b = 300;
float alpha2 = M_PI/90;
float d = 0;
while(true){
setcolor(GREEN);
circle((int)a,(int)b,10);
setfillstyle(1,GREEN);
floodfill(a,b,GREEN);
delay(5);
setfillstyle(1,BLACK);
floodfill(a,b,BLACK);
setcolor(BLACK);
circle(a,b,10);
if(d == 360) d = 0;
d+=alpha2;
a = 250 + 150 + 150*cos(d);
b = 150 + 150 + 150*sin(d);
}
}
void Do_Nhu_Univer_2(){
pthread_t t1,t2;
pthread_create(&t1,NULL,earth_2,NULL);
pthread_create(&t2,NULL,yupiter_2,NULL);
getch();
}
Lỗi đây ạ

cảm ơn bạn. mà bạn viết bằng pascal à 
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?