|
| sleep < 1 ms ? Fra : Simon [2700] |
Dato : 04-12-04 18:25 |
|
Hej,
kan man få en tråd/et program til at sove under 1 ms, 1 ms er jo oceaner af
tid på en hurtig processor, og jeg behøver ikke give tid til andre tråde så
meget.
Det skal bruges fordi jeg har en metode der tager omkring 300ms af køre, og
den skal køres forholdsvist ofte (hvert sekund pt, men gerne bare hele
tiden) og jeg ville helst undgå den udsulter resten af mit program imens -
så jeg tænkte hvis den kunne sove 1/20 ms hver gang den kørte (for hvert
loop i den) eller noget i den retning, så kunne de andre meget mindre
krævende dele af min applikation få tid til at bruge cpu'en der... ?
det er noget i retning af
for(int i=rækker; rækker < bane.length; rækker++)
{
for(int u=kolonner; kolonner < bane[0].length; kolonner++)
{
<tjek en masse ting>
Thread.sleep(0.00005);
}
}
på forhånd tak
-Simon
| |
Simon [2700] (04-12-2004)
| Kommentar Fra : Simon [2700] |
Dato : 04-12-04 20:16 |
| | |
Lars Dam (04-12-2004)
| Kommentar Fra : Lars Dam |
Dato : 04-12-04 23:22 |
| | |
Thorbjoern Ravn Ande~ (05-12-2004)
| Kommentar Fra : Thorbjoern Ravn Ande~ |
Dato : 05-12-04 00:39 |
|
"Simon [2700]" <devnull@linux.org> writes:
> loop i den) eller noget i den retning, så kunne de andre meget mindre
> krævende dele af min applikation få tid til at bruge cpu'en der... ?
Til hvad? Er det blot for at Swing skal være responsiv?
--
Thorbjørn Ravn Andersen
http://unixsnedkeren.dk/ravn
| |
Simon [2700] (05-12-2004)
| Kommentar Fra : Simon [2700] |
Dato : 05-12-04 00:53 |
|
> Til hvad? Er det blot for at Swing skal være responsiv?
nej det er til et spil, et pacman spil... 2 tråde der kører automatisk og
skal fange den 3 tråd der er menneske styret.
det har ikke noget med swingcomponenter at gøre lige umiddelbart, da disse
ikke skal bruges under selve spillet hvor
trådene kører.
mvh.Simon
| |
Brian Matzon (05-12-2004)
| Kommentar Fra : Brian Matzon |
Dato : 05-12-04 15:28 |
|
Simon [2700] wrote:
> nej det er til et spil, et pacman spil... 2 tråde der kører automatisk og
> skal fange den 3 tråd der er menneske styret.
> det har ikke noget med swingcomponenter at gøre lige umiddelbart, da disse
> ikke skal bruges under selve spillet hvor
> trådene kører.
Hmm Flere tråde og spil er en meget dårlig model (i de fleste
situationer). Er du sikker på at en remodellering ikke er bedre, således
du kun har en tråd?
I øvrigt, hvis du skal "fange" en tråd, er det så ikke mere wait/notify
du leder efter?
/matzon
| |
Morten K. Hansen (05-12-2004)
| Kommentar Fra : Morten K. Hansen |
Dato : 05-12-04 21:41 |
|
Den 05-12-2004 15:28, skrev Brian Matzon:
> [...] Hmm Flere tråde og spil er en meget dårlig model (i de fleste
> situationer). Er du sikker på at en remodellering ikke er bedre, således
> du kun har en tråd?
> [...]
Jeg hopper lige ind her.
Jeg sidder for sjov og laver et slags spil, noget med nogle bolde og
sårn (arkanoid-klon). Jeg har pt. én tråd pr. objekt der skal bevæge
sig, men det er ikke en god ide, eller hvad?
Jeg har haft problemer med at spillet æder vældig meget CPU kraft, kan
det skyldes at der er flere tråde?
Har du en reference til en artikel om emnet?
--
Med venlig hilsen / Best regards
Morten K. Hansen http://hansen-winkel.dk/
Replying by mail? Change 'spam' to my first name.
| |
Brian Matzon (06-12-2004)
| Kommentar Fra : Brian Matzon |
Dato : 06-12-04 01:08 |
|
Morten K. Hansen wrote:
> Jeg har haft problemer med at spillet æder vældig meget CPU kraft, kan
> det skyldes at der er flere tråde?
> Har du en reference til en artikel om emnet?
Nope men generelt ser et spil sådan ud (MEGET simplificeret):
public class Game {
private boolean running = true;
public Game() {
// allocate stuff
}
public void initialize() {
// initialize stuff
}
public void destroy() {
// destroy stuff
}
public void execute() {
while(running) {
handleInput(); // poll keyboard, mouse or check events
updateWorld(); // update positions, check collision, ...
renderWorld(); // paint all entities, lock to frame rate
}
}
public static void main(String[] args) {
Game game = new Game();
if(game.initialize()) {
game.execute();
game.destroy();
}
}
}
dvs, main tråd laver alt, den poller input, beder objekter om flytte
sig, laver kollision osv. Til sidst rendere den verdenen som den ser ud
lige nu.
Hvis man laver spil i Java, kan jeg stærkt anbefale LWJGL: LightWeight
Java Game Library: http://lwjgl.org
/matzon
| |
RpR (06-12-2004)
| Kommentar Fra : RpR |
Dato : 06-12-04 18:32 |
|
> > Har du en reference til en artikel om emnet?
> Nope men generelt ser et spil sådan ud (MEGET simplificeret):
De lidt mere komplicerede ting som nudagens forbrugere nok er vandt til er
lidt mere multithreadede
--
- RpR
MopedGallery - More addictive than heroine
http://www.MopedGallery.dk
ICQ: 19284098
"4-strokes are full of parts, 2-strokes are full of SPEED!"
--
| |
Lars Dam (05-12-2004)
| Kommentar Fra : Lars Dam |
Dato : 05-12-04 11:06 |
|
On Sun, 5 Dec 2004 00:54:01 +0100
"Simon [2700]" <devnull@linux.org> wrote:
>
>
> > nå, det ser ud til man ikke kan sove så lidt, andre idéer ?
>
> Prøv evt. med Thread.yield(); på passende tidspunkter
>
> Hej,
>
> jeg så godt yield() i API'et, men jeg synes ikke der står noget om hvordan
> tråden startes igen,
> eller hvordan yield ellers virker....
>
> hvad jeg tror der sker:
> tråden lader andre få fat i resourcer og når de ikke skal bruge dem mere
> (cpu'en) fortsætter tråden automatisk...
> er det noget i den retning ?
Noget i den stil. Den aktuelle tråd pauser og lader andre kommer til. Udemærket
hvis du har en beregningstung opgave og vil lade andre opgaver komme til. Måske
kan du også prøve at sænke prioriteten.
> mvh.Simon
>
>
vh. ld
| |
|
|