Skip to content

The thread:alive() method may not work #22

Open

Description

@javalikescript

Depending on the pthread implementation, the thread:alive() method may not work.

Existing implementations vary on the result of a pthread_kill() with a thread ID indicating an inactive thread (a terminated thread that has not been detached or joined). Some indicate success on such a call, while others give an error of [ESRCH].

The glibc seems to return success since 2.34

Activity

  1. javalikescript commented on Apr 5, 2025

    @javalikescript
    Author

    Could be reproduced with the following code.

    local llthreadsLib = require('llthreads')
    local luaSocketLib = require('socket')
    
    local t = llthreadsLib.new([[
        luaSocketLib = require('socket')
        luaSocketLib.sleep(1)
        print('ended')
    ]])
    t:start(false, true)
    
    for i = 1, 5 do
        print('alive', t:alive())
        luaSocketLib.sleep(0.5)
    end
    
    print('join', t:join())

    Which results in

    lua work/llthread.lua 
    alive   true
    alive   true
    ended
    alive   true
    alive   true
    alive   true
    join    true
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions