pthread doesn't need to be in an extern