Sample code for 30+ languages & platforms
Node.js

Thread Pool Size

See more Async Examples

Demonstrates how to set the maximum number of threads in Chilkat's thread pool manager. Also demonstrates how to set a thread pool log file for help in diagnosing unexpected problems.

Chilkat Node.js Downloads

Node.js
NODEJS_PRELUDE

function chilkatExample() {

    var success = false;

    //  This example assumes the Chilkat API to have been previously unlocked.
    //  See Global Unlock Sample for sample code.

    success = false;

    //  Set the maximum number of threads in the Chilkat thread pool to 12.
    //  This means that no more than 12 background worker threads will exist simultaneously.
    //  If more than 12 tasks are queued then some must wait for a worker thread to become free.
    //  Note: The Chilkat thread pool manager thread is a thread distinct from the
    //  worker threads.  It starts when the 1st asynchronous task is Run. 
    var glob = new chilkat.Global();
    glob.MaxThreads = 12;

    //  Also, the ThreadPoolLogPath can be set to cause the thread pool manager thread to
    //  keep a log file. This is for the purpose of debugging if unexpected problems occur.
    glob.ThreadPoolLogPath = "/home/users/chilkat/logs/threadPoolLog.txt";

    var http1 = new chilkat.Http();
    var http2 = new chilkat.Http();
    var http3 = new chilkat.Http();

    var url1 = "http://www.marcusmiller.com/";
    var url2 = "http://www.tromboneshorty.com/";
    var url3 = "http://www.jamesmorrison.com/";

    //  Call the async version of the QuickGetStr method to return a task object.
    //  The task object is loaded, but is in the Inert state -- meaning it is
    //  not yet scheduled to run on Chilkat's background thread pool.
    // task1: Task
    var task1 = http1.QuickGetStrAsync(url1);
    if (http1.LastMethodSuccess == false) {
        console.log(http1.LastErrorText);
        return;
    }

    // task2: Task
    var task2 = http2.QuickGetStrAsync(url2);
    if (http2.LastMethodSuccess == false) {
        console.log(http2.LastErrorText);

        return;
    }

    // task3: Task
    var task3 = http3.QuickGetStrAsync(url3);
    if (http3.LastMethodSuccess == false) {
        console.log(http3.LastErrorText);

        return;
    }

    //  At this point we have 3 task objects, each loaded with a Chilkat method call.
    //  Note: At this point no background threads are running.  The thread pool manager
    //  thread is not started -- it will start when the very first task is Run.

    //  Schedule each task for running on the thread pool.  This changes each task's state
    //  from Inert to Live. The thread pool manager thread starts with the 1st task queued.
    //  If the Global.ThreadPoolLogPath property was set, then
    //  the log file would be created (or appended) at this point.
    success = task1.Run();
    //  Assuming success for brevity...
    success = task2.Run();
    success = task3.Run();

    //  The application is now free to do anything else
    //  while the HTML at the URL's are being downloaded in background threads.

    //  In this case, we'll just wait for all three tasks to finish.
    //  All three tasks are running simultaneously in separate background threads.
    //  We can wait for each in any order.  If Wait is called and the task has already
    //  finished (or been canceled), then the Wait method returns immediately.
    var maxWaitMs = 20000;
    success = task1.Wait(maxWaitMs);
    success = task2.Wait(maxWaitMs);
    success = task3.Wait(maxWaitMs);
    //  Assuming success for brevity...

    var err = "Task failed or canceled";
    var html1 = err;
    var html2 = err;
    var html3 = err;

    //  Now get the HTML downloaded in each task:
    if ((task1.StatusInt == 7) && (task1.TaskSuccess == true)) {
        html1 = task1.GetResultString();
    }

    if ((task2.StatusInt == 7) && (task2.TaskSuccess == true)) {
        html2 = task2.GetResultString();
    }

    if ((task3.StatusInt == 7) && (task3.TaskSuccess == true)) {
        html3 = task3.GetResultString();
    }

    console.log(html1);
    console.log("----");
    console.log(html2);
    console.log("----");
    console.log(html3);
    console.log("----");


}

chilkatExample();