Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 9287587
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: June 18, 20262026-06-18T19:42:39+00:00 2026-06-18T19:42:39+00:00

Today my boss and I were having a discussion about some code I had

  • 0

Today my boss and I were having a discussion about some code I had written. My code downloads 3 files from a given HTTP/HTTPS link. I had multi-threaded the download so that all 3 files are downloading simultaneously in 3 separate threads. During this discussion, my boss tells me that the code is going to be shipped to people who will most likely be running old hardware and software (I’m talking Windows 2000).

Until this time, I had never considered how a threaded application would scale on older hardware. I realize that if the CPU has only 1 core, threads are useless and may even worsen performance. I have been wondering if this download task is an I/O operation. Meaning, if an API is blocked waiting for information from the HTTP/HTTPS server, will another thread that wants to do some calculation be scheduled meanwhile? Do older OSes do such scheduling?

Another thing he said: Since the code is going to be run on old machines, my application should not eat the CPU. He said use Sleep() calls after CPU intensive tasks to allow other programs some breathing space. Now I was always under the impression that using Sleep() is terrible in any program. Am I wrong? When is using Sleep() justified?

Thanks for looking!

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-06-18T19:42:41+00:00Added an answer on June 18, 2026 at 7:42 pm

    I have been wondering if this download task is an I/O operation.
    Meaning, if an API is blocked waiting for information from the
    HTTP/HTTPS server, will another thread that wants to do some
    calculation be scheduled meanwhile? Do older OSes do such scheduling?

    Yes they do. That’s the joke of having blocked IO. The thread is suspended and other calculations (threads) take place until an event wakes up the blocked thread. That’s why it makes completely sense to split it up into threads even for single core machines instead of doing some poor man scheduling between the downloads yourself in a single thread.

    Of course your downloads affect each other regarding bandwith, so threading won’t help to speedup the download 🙂

    Another thing he said: Since the code is going to be run on old
    machines, my application should not eat the CPU. He said use Sleep()
    calls after CPU intensive tasks to allow other programs some breathing
    space.

    Actually using sleep AFTER the task finished won’t help here. Doing Sleep after a certain time of calculation (doing sort of time slicing) before going on with the calculation could help. But this is only true for cooperative systems (e.g. like Windows 3.11). This does not play a role for preemptive systems where the scheduler uses time slicing to allocate calculation time to threads. Here it would be more important to think about lowering the priority for CPU intensive tasks in order to give other tasks precedence…

    Now I was always under the impression that using Sleep() is terrible
    in any program. Am I wrong? When is using Sleep() justified?

    This really depends on what you are doing. If you implement sort of busy waiting for a certain flag being set which is set maybe after few seconds it’s better to recheck if it’s set after going to sleep for a while in order to give up your scheduled time slice instead of just buring CPU power with checking for a flag never being set.

    In modern systems there is no sense in introducing Sleep in a calculation as it will only slow down your calculation.

    Scheduling is subject to the OS’s scheduler. He’s the one with the “big picture”. In my opinion every approach to “do it better” is only valid inside the scope of a specific application where you have the overview over certain relationships that are not obvious to the scheduler.

    Addendum:
    I did some research and found that Windows supports preemptive multitasking from Windows 95. The Windows NT-line (where Windows 2000 belongs to) always supported preemptive multitasking.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

Today at work I had a discussion with my co-workers and my boss about
Hi guys i got a strange job to do from my boss today, i
Today I was writing some C code to sort an array of structs using
Today I had a strange encounter with gcc. consider the following code: float len[ELEM+1];
Today I am trying to remove some bytes from an EXE file. Inside the
Today, I saw this article on Twitter about getting Webm data from a canvas:
Today while investigating how/where to download and save audio/image files from a URL in
Today while I was writing some code for two methods that shows and hides
Today I got an email from my boss saying to change the regex in
Today at work, I was given a task to fix a bug within our

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.