A fork, when applied to a programming language, is when a subroutine creates a copy of itself, which then acts as a "child" of the original subroutine, now called the "parent". More generally, a fork in a multithreading environment means that a thread of execution is duplicated.