diff --git a/README.md b/README.md index 915fb75..1165d93 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ variety of languages and technologies. These are things that don't really warrant a full blog post. These are mostly things I learn by pairing with smart people at [Hashrocket](http://hashrocket.com/). -_511 TILs and counting..._ +_512 TILs and counting..._ --- @@ -90,6 +90,7 @@ _511 TILs and counting..._ - [Compute md5 Digest Of A String](elixir/compute-md5-digest-of-a-string.md) - [Counting Records With Ecto](elixir/counting-records-with-ecto.md) - [Create A Date With The Date Sigil](elixir/create-a-date-with-the-date-sigil.md) +- [Creating A PID](elixir/creating-a-pid.md) - [Creating Indexes With Ecto](elixir/creating-indexes-with-ecto.md) - [Determine The Latest Release Of A Hex Package](elixir/determine-the-latest-release-of-a-hex-package.md) - [Do You Have The Time?](elixir/do-you-have-the-time.md) diff --git a/elixir/creating-a-pid.md b/elixir/creating-a-pid.md new file mode 100644 index 0000000..334de87 --- /dev/null +++ b/elixir/creating-a-pid.md @@ -0,0 +1,40 @@ +# Creating A PID + +Often times, when invoking a function that spawns a process, the PID of the +spawned process is returned and we bind to it. That PID is a reference to +some BEAM process in our system. + +We can create our own references using the `pid/3` function. + +Let's assume we have the following processes, among others, in our system at +the moment. + +```elixir +> Process.list |> Enum.reverse |> Enum.take(3) +[#PID<0.284.0>, #PID<0.283.0>, #PID<0.282.0>] +``` + +We can create a reference to any of them using the three number parts that +they are made up of. + +```elixir +> pid(0, 284, 0) +#PID<0.284.0> +``` + +See, it's alive. + +```elixir +> pid(0, 284, 0) |> Process.alive? +true +``` + +What if we make up a PID that doesn't actually reference any process? + +```elixir +> pid(0, 333, 0) |> Process.alive? +false +``` + +Note: there is also a `pid/1` version of the function. See `h pid` for more +details.