ROS provides nodelets as an execution unit; these are a type of ROS node that allow you to run multiple nodes in an umbrella of a single process. They correspond to threads and processes in the Linux system, and they're called threaded nodes. These could communicate with each other efficiently without overloading the network transport layer between two nodes. Moreover, these threaded nodes can also communicate with external nodes.
In the ROS framework, nodelets are used when the volume of data transferred among nodes is very high, for example, when transferring data from laser sensors or when a camera points to an object like a cloud, respectively.