lua-users home
lua-l archive

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]


On 28.07.2016 11:50, Dirk Laurie wrote:
2016-07-28 10:54 GMT+02:00 Thomas Jericke <tjericke@indel.ch>:



so a solution would be to just grantee the most obvious behavior.
Not an option.

Someday we may see ParaLua, an implementation of Lua that can
exploit a parallel computer or a cluster. In that case such a guarantee
would force a bottleneck.

You already have that bottleneck, as you already can call functions with side effects in the table constructors. While it isn't guaranteed that these functions are called in order, it is guaranteed that they are called uninterrupted.

For example:

local UID = 0
local function ReturnUniqueNumber()
  UID = UID + 1
  return UID
end

table = {
  ReturnUniqueNumber(),
  ReturnUniqueNumber(),
  ReturnUniqueNumber(),
}

It is not guaranteed in which order 1, 2, 3 is filled in this table, but it is guaranteed that 1, 2, 3 is somewhere in there. If you call ReturnUniqueNumber in parallel, it is possible that you end up with { 1, 1, 1}
--
Thomas